Bash 脚本通过 SSH 连接到多个服务器并在登录失败时继续

朋兹

我有一个 Bash 脚本,它使用 SSH 密钥登录到服务器列表。

该脚本遍历名为 test_hosts.txt 的主机名的纯文本文件。

该脚本工作正常,除非其中一个登录因某种原因失败。如果在其中一台主机上登录失败,则整个脚本将停止并且列表中的其他主机均不会登录。

如果由于任何原因登录失败,我如何调整此脚本以继续运行?

#!/bin/bash

USER="username@domain@"

KPATH="/path/to/key"

while read host; do
    echo $host
    echo ${KPATH}    

    GETSIZE="df -h"
    ssh ${USER}$host ${KPATH} "${GETSIZE}" > Test/Hosts/$host.txt

done <Test/Hosts/test_hosts.txt

更新:脚本停止意味着,它不会继续到列表中的下一个主机。

戈登戴维森

这是一个猜测,但ssh倾向于从标准输入中读取,并尝试将在那里找到的任何内容传递给远程计算机。当您sshwhile read循环中使用,这可能意味着ssh将窃取您打算read在循环中使用的数据如果这是问题所在,有一个相当简单的解决方案:通过 fd 3 而不是标准输入传递主机文件:

while read -u3 host; do
    ...
done 3<Test/Hosts/test_hosts.txt

3<在 fd 3 而不是 stdin 上打开文件,并-u3告诉read从 fd 3 读取。)

另一种可能性是将-n选项添加ssh,它告诉它不要从标准输入读取。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Bash脚本通过SSH进入服务器

当有人连接到ssh服务器时如何执行bash脚本(freebsd)

通过ssh重启远程服务器时,bash脚本意外退出

如何通过多个SSH运行本地bash脚本

如何使用nohup通过ssh在远程服务器上执行本地bash脚本

通过ssh登录到远程服务器时,如何更改目录并设置bash选项

如何调用 bash 脚本以通过 ssh 连接从另一个脚本运行

Bash脚本变量未通过SSH传递

使用 bash 脚本连接到 SSH

通过SSH连接到我可以通过Web登录登录的服务器

如何通过新的Windows 10 Linux bash使用SSH密钥对连接到远程服务器?

使用SSH通过密码连接到远程服务器的脚本

通过Java在后台执行bash脚本的ssh连接被关闭后

当我通过ssh执行bash脚本时,如何查看“ read -p”的文本?

通过 bash 脚本连接到不可见的 SMB 服务器

如何通过bash脚本连接到ftp服务器?

通过脚本连接到多个ssh连接

如何连接到远程X服务器(通过ssh登录)

通过ssh在服务器上以sudo的身份运行“计划的” /延迟的脚本-并在ssh退出之前

如何从 bash 脚本启动多个 ssh 会话

如何在服务器中运行Expect脚本以进行SSH并在bash脚本中设置值

通过SSH连接到大学服务器

外部通过SSH连接到Ubuntu服务器

无法通过SSH连接到服务器

如何从OSX通过SSH连接到Ubuntu服务器?

通过公司代理连接到SSH服务器

继续通过ssh运行脚本

无法通过Bash脚本使用私钥进行SSH

perl:从bash脚本通过ssh替换字符串