我正在创建一个bash脚本以SSH到多个服务器上。我正在使用一个while循环和一个.txt文件,其中包含服务器列表。
这是因此我们可以查看可用于通过特定管理服务器上的ssh连接到哪些服务器。如果服务器超时,则无法通过ssh访问它。如果连接,则可以通过ssh访问。
#!/bin/bash
file=$1
while IFS= read -r line;
do
echo "$line"
timeout 10s ssh sysadmin@$line "echo $line"
if [ "$?" = 0 ]; then
echo "worked"
fi
if [ $? -eq 124 ]; then
echo "Timeout"
echo "failed"
echo "$line"
fi
echo "$line"
done <"$file"
预期结果是,如果它无法连接到服务器,它将打印“失败”并移至下一个服务器。如果工作正常,它将打印“工作”并移至下一台服务器。
实际结果是它将循环一次并退出。 如何解决此问题,使其循环播放直到文件没有更多行要读取?