我想要“ping”一些远程机器上的应用程序是否正在运行。
为此,我有一个包含服务器和应用程序的文件,例如:
server1:application1
server2:application1
server3:application2
Etc.
我希望能够获取服务器上运行此名称应用程序的数量。
为了连接和检查,我需要一个SSH连接。
我的脚本是Bash,内容如下:
Ping_Applications () {
SetParam
cat $APPFILE | while read next
do
server=`echo $next | cut -d : -f1`
app=`echo $next | awk -F":" '{print $2}'`
commando="/bin/ssh $server '/bin/ps -fea | /bin/grep $app | /bin/grep -v grep | /bin/wc -l'"
eval COMA=\$\($commando\)
echo $commando
if [ $COMA != 0 ]
then
echo -e "$TIME : Application $app of on server $server is \E[32m[ RUNNING ]\E[0m";
else
echo -e "$TIME : Application $app of on server $server is \E[31m[ NOT RUNNING ]\E[0m";
fi
done;
}
我的问题是当我发送信息时,
ssh $server 'ps -fea | grep $app | grep -v grep | wc -l'
这会返回数字,但是当使用脚本发送时,我没有得到回答,因为(我认为)管道打开了一个新的shell。
我不知道如何解决这个问题。
有什么想法吗?
谢谢
Luis
{}
工具来保持正确的格式,包括代码、数据和错误信息等。祝你好运! - shellterpgrep
而不是ps
和2个grep
。 - Eric Renouf