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)
但它在第一台服务器后停止。
谢谢 :) 。
有-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读取)。
您需要将循环中 SSH 命令的 stdin 重定向到无处可防止读取所有行。这应该这样做:
http_status=$(ssh $name "ps -ef | grep -v grep | grep $service | wc -l" < /dev/null)
Run Code Online (Sandbox Code Playgroud)