检查是否通过 SSH 提示输入密码



嗨,我有一个几百个主机的列表。我想在循环中使用 ssh 运行命令,如果我的 ssh 密钥设置正确,那么如果我收到密码质询,我会执行命令我想跳到下一个主机

所以假设我有hosta,hostb和hostc。 我可以对hosta和hostc做一个ssh,但hostb正在挑战我的密码。有没有办法检查主机是否会向我提出密码? 所以我的逻辑是

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

我希望这是有道理的。提前感谢您

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

如果这是你经常做的事情,我建议看看dsh。http://www.tecmint.com/using-dsh-distributed-shell-to-run-linux-commands-across-multiple-machines/

它允许您列出您的服务器,并针对所有服务器或仅针对子集(Web,db,app等)运行命令

您可以创建全局文件,也可以创建自己的个人文件。

ssh有一个选项,称为BatchMode

你可以像这样使用它

ssh -o BatchMode ...

它不会问你任何事情,但跳过连接尝试。

或者使用 rundeck - 这可以在 http://rundeck.org 中找到

相关内容

  • 没有找到相关文章

最新更新