每天晚上,我都要检查T1的故障转移系统。我基本上经历了以下过程:
启动故障切换过程。
traceroute $server;一旦我看到它被故障转移,我就通过SSHing验证到服务器的连接是否正常工作。
ssh $server;然后,一旦我看到它工作了,我就把它从故障转移中移除。
因此,我想要做的是连续运行traceroute,直到得到某个结果,然后运行SSH命令。
发布于 2010-06-19 12:21:39
将成功的消息列表放入一个文件中(省略变量行和该行的小数部分,并使用^标识该行的开头,如下所示)
patterns.list:
^ 7 4.68.63.165
^ 8 4.68.17.133
^ 9 4.79.168.210
^10 216.239.48.108
^11 66.249.94.46
^12 72.14.204.99 然后是一个简单的while循环:
while ! traceroute -n ${TARGET} | grep -f patterns.list
do
sleep 5 # 5 second delay between traceroutes, for niceness.
done
ssh ${DESTINATION}使用traceroute -n生成输出,这样您就不会获得解析一次的IP地址,而是获得下一次解析的名称,从而导致误报。
发布于 2010-08-10 12:31:09
我认为您最好使用ping命令来验证服务器的可访问性,而不是traceroute。
无需使用任何grep即可轻松检查ping命令的返回状态:
if [ ping -c 4 -n -q 10.10.10.10 >/dev/null 2>& ]; then
echo "Server is ok"
else
echo "Server is down"
fi如果你想在循环中不断地做这件事,试试这个:
function check_ssh {
# do your ssh stuff here
echo "performing ssh test"
}
while : ; do
if [ ping -c 4 -n -q 10.10.10.10 >/dev/null 2>& ]; then
echo "Server is ok"
check_ssh
else
echo "Server is down"
fi
sleep 60
donehttps://stackoverflow.com/questions/3074250
复制相似问题