【发布时间】:2018-09-08 21:32:13
【问题描述】:
我制作了这个脚本来检查我是否可以连接到许多服务器的列表:
for SERVER in $(cat servers.txt); do
ssh root@$SERVER && echo OK $SERVER || echo ERR $SERVER
done
问题是,如果是我第一次连接到服务器,服务器会问经典问题“The authenticity of host ‘x.x.x.x’ can't be established... bla bla bla”然后我必须回答是或否,它失去了让它成为脚本的目的,有什么办法可以绕过它,以便我可以将其添加到脚本中?
另外,有些服务器中我没有我的密钥,但他们可以选择输入密码。在这种情况下,它会等到我尝试输入密码才能继续执行脚本,所以我想知道是否有办法改进这个脚本,所以如果服务器要求输入密码,然后将其设置为 ERR $SERVER 并继续脚本?
感谢您的帮助。
【问题讨论】:
-
ssh没有要执行的命令将启动交互式登录会话。您需要发送类似ssh root@$SERVER true的命令。 -
@Barmar 谢谢Barman,我也在寻找这个选项。
-
使用
while循环遍历服务器列表,而不是for循环。while IFS= read -r SERVER; do ...; done < servers.txt. -
sshpass 可用于传递密码。另外,如果可能的话,您可能想尝试 python 和 paramiko 模块
标签: bash ssh scripting openssh