Linux shell脚本-ping失败时循环停止

Linux shell脚本-ping失败时循环停止,linux,shell,timeout,ping,centos5,Linux,Shell,Timeout,Ping,Centos5,我正在尝试编写一个shell脚本来ping指定文件中列出的每台服务器,并获取其正常运行时间。预期的行为是,如果在${TIMEOUT}秒之后未到达服务器,脚本将停止尝试ping该服务器,并移动到列表中的下一个服务器。但是,当服务器的ping超时时,程序将完全停止,而不只是移动到列表中的下一台服务器。我怎样才能解决这个问题 以下是相关的代码片段(${ALS_HOSTS}是要ping的服务器列表): 读取主机ID时 做 ping-c${NUM\u ping\u PACKETS}${hostid} 如果

我正在尝试编写一个shell脚本来ping指定文件中列出的每台服务器,并获取其正常运行时间。预期的行为是,如果在${TIMEOUT}秒之后未到达服务器,脚本将停止尝试ping该服务器,并移动到列表中的下一个服务器。但是,当服务器的ping超时时,程序将完全停止,而不只是移动到列表中的下一台服务器。我怎样才能解决这个问题

以下是相关的代码片段(${ALS_HOSTS}是要ping的服务器列表):

读取主机ID时
做
ping-c${NUM\u ping\u PACKETS}${hostid}
如果ping-w${TIMEOUT}-c${NUM_ping_PACKETS}${hostid}| grep'来自'2>/dev/null 1>&2#检查输出
然后
ssh${hostid}正常运行时间>${WORKDIR}/${hostid}&
fi
完成<${ALS_HOSTS}

(此脚本将在此时无法升级或重新配置的CentOS 5计算机上运行)

这可能是因为
ssh
while read
循环共享stdin,并排出所有数据以将其发送到远程主机

使用ssh-n

ssh -n ${hostid} uptime > ${WORKDIR}/${hostid} &
ssh -n ${hostid} uptime > ${WORKDIR}/${hostid} &