gpt4 book ai didi

linux - 如何使用循环 ssh 多个服务器,但如果一个用户失败,则与两个用户尝试另一个

转载 作者:太空宇宙 更新时间:2023-11-04 12:47:16 24 4
gpt4 key购买 nike

我有多个服务器,我必须在所有服务器上运行特定命令。我的 ssh-key 在所有服务器上,但在少数服务器上用户名不同(userme),其他服务器是根访问。我使用用户 ssh-agent bashssh-add ~/.ssh/id_mykey 进行 root 访问。我正在使用 for loop 连接到多个服务器,因为我已将它们存储在一个文件中,并且正在通过 for 循环读取它。for i in $(cat ServersList);做 echo $i ;ssh $i cat/etc/issue.net;完成但是每当服务器出现我的用户名 (userme) 时,它都会要求输入密码。

我想使它自动化,只要它在 root 访问时失败,它就应该使用我的用户名。

例如:
我在 $(cat ServerList) 中;做
echo $我;
ssh $i cat/etc/issue.net;
如果(此处失败);然后
使用 ssh userme@$i;
菲;
完毕
谁能帮我,怎么做?

欢迎大家提出建议

最佳答案

如果连接失败,

ssh 将具有非零退出状态。

while read i; do
ssh "$i" cat /etc/issue.net || ssh userme@"$i" cat /etc/issue.net
done < ServerList

不过,更好的办法是将必要的用户 ID 存储在服务器列表中。例如,如果文件包含

root host1
userme host2
userme host3
root host4

然后你的循环可以同时获得

with read user host; do
ssh "$user@$host" cat /etc/issue.net
done < ServerList

关于linux - 如何使用循环 ssh 多个服务器,但如果一个用户失败,则与两个用户尝试另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38350900/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com