检查SSH提示是否需要密码

8

你好,我有几百个主机名需要处理。我希望使用ssh循环执行命令。如果我的ssh密钥设置正确,则可以执行命令。如果需要密码,我希望跳过该主机并执行下一个主机。

假设我有主机A、主机B和主机C。我可以ssh到主机A和主机C,但主机B会要求输入密码。有没有办法检查哪些主机需要输入密码?所以我的逻辑是:

if I get challenge from $host; then
   skip host 
else
   ssh $host 'command'
fi 

我希望你能理解这个意思。提前感谢你。


1
请查看此链接:https://code.google.com/p/parallel-ssh/ - hek2mgl
4个回答

7
for host in host1 host2 host3; do
    ssh -o PasswordAuthentication=no $host command
done

为了并行化,添加 &
for host in host1 host2 host3; do
    ssh -o PasswordAuthentication=no $host command &
done

1

1

ssh 有一个选项,叫做 BatchMode

你可以像这样使用它

ssh -o BatchMode ...

它不会向您询问任何内容,而是跳过连接尝试。


是的,但它会按顺序运行。这是最糟糕的情况。 - hek2mgl

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接