如何修复仅执行一次的bash中的while循环

时间:2019-02-14 13:29:23

标签: bash shell ssh while-loop scripting

我正在创建一个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"

预期结果是,如果它无法连接到服务器,它将打印“失败”并移至下一个服务器。如果工作正常,它将打印“工作”并移至下一台服务器。

实际结果是它将循环一次并退出。 如何解决此问题,使其循环播放直到文件没有更多行要读取?

0 个答案:

没有答案