遍历服务器并运行命令

KTM*_*KTM 7 ssh service shell-scripting

我在名为network_list.txt. 如何运行服务器并运行命令并显示结果?我尝试了以下方法:

filename="network_list.txt"
service=httpd
while read -r line
do
    name="$line"
    ping -c 3 $name > /dev/null 2>&1;
    RETVAL=$?
        if [ $RETVAL -ne 0 ]
        then 
           echo "$name is down"
        else 
            echo "$name is up and running"
        fi
    http_status=$(ssh $name ps -ef | grep -v grep | grep $service | wc -l)
        if [ $http_status -ne 0 ]
        then
            echo "$service is up and running in $name"
        else
            echo "$service is down in $name"
        fi
done < "$filename"
Run Code Online (Sandbox Code Playgroud)

但它在第一台服务器后停止。

谢谢 :) 。

Jar*_*era 8

-n -x参数的解决方案:

http_status=$(ssh -nx name ps -ef | grep -v grep | grep $service | wc -l)
Run Code Online (Sandbox Code Playgroud)

-xX11转发禁止以摆脱可能的X11 forwarding request failed消息。

所述-n重定向从标准的/ dev / null的(实际上,防止从stdin读取)。


Kha*_*led 7

您需要将循环中 SSH 命令的 stdin 重定向到无处可防止读取所有行。这应该这样做:

http_status=$(ssh $name "ps -ef | grep -v grep | grep $service | wc -l" < /dev/null)
Run Code Online (Sandbox Code Playgroud)