如果某些应用程序在某些远程计算机上运行,我正在尝试“ping”。ssh + ksh + grep + wc
要做到这一点我有服务器和应用程序文件,如:
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'
这将返回的数量,但是当通过使用脚本发送,我没有回答,因为(我认为)管道打开一个新的外壳。
我不知道如何解决这个问题。
有什么想法?
感谢
路易斯
欢迎使用stackoverflow。在突出显示的代码/数据/错误信息中,使用编辑框左上角的“{}”工具来保持正确的格式。祝你好运! – shellter
是不是有一个原因,你不是直接运行命令,而是将它放入字符串'eval'?此外,不相关,但你可以尝试使用'pgrep'而不是'ps'和2'grep' –