gpt4 book ai didi

bash - 如何检查与bash中服务器列表的连接?

转载 作者:行者123 更新时间:2023-12-02 14:06:49 24 4
gpt4 key购买 nike

我正在尝试检查服务器列表的连接。我想遍历列表,检查连接是否正常,如果可以,请执行一些操作,否则请回显问题消息。

我的问题是:
该脚本在第一个节点处停止,而没有回显$?。
那么,我的for循环怎么了?

这些var包含在配置文件中:$nodes是服务器IP列表,例如1.1.1.1,2.2.2.2,10.10.10.10$user是一个字符串

for node in $(echo $nodes | sed "s/,/ /g")
do
echo "Checking Node: $node"

ssh -q -o ConnectTimeout=3 $user@$node echo ok
echo $?
if [[ $? != 0 ]]
then
echo "Problem in logging into $node"
else
# do some stuff here
fi
done

编辑#1:
for node in $(echo $nodes | sed "s/,/ /g")
do
echo "Checking Node: $node"

ssh -q -t -o ConnectTimeout=3 $user@$node "echo ok"
retcode=$?
echo $retcode
if [[ "$retcode" -ne 0 ]]
then
echo "Problem in logging into $node"
else
echo "OK"
fi
done

最佳答案

这是因为ssh首先要求您验证主机的权限,如果您接受该权限,它将要求输入密码。这就是为什么您的命令不返回 shell 程序并等待输入的原因。

如果您的目的只是验证ssh连接,则可以考虑使用

telnet <your_host> <port> < /dev/null

但是,如果要运行某些命令,则需要主机之间的信任关系。在这种情况下,您可以使用:

执行以下命令:
ssh-keygen -t rsa

然后
ssh-copy-id -i root@ip_address

现在您可以连接
ssh <user>@<host>

Furher information

关于bash - 如何检查与bash中服务器列表的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54106681/

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