每天晚上我都会检查T1的故障转移系统。我基本上经历了以下过程:
启动故障转移过程。
traceroute $server;
一旦我看到它的故障转移,我通过SSH连接到服务器来验证连接是否正常工作。
ssh $server;
然后,一旦我看到它有效,我就将其从故障转移中解脱出来。
所以我想做的是继续运行traceroute,直到得到一定的结果,然后运行SSH命令。</ p>
答案 0 :(得分:1)
将成功消息列表放在一个文件中(省略行的可变行和分数,并使用^来标识行的开头,如下所示:)
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地址,而是下一个名称,导致误报。
答案 1 :(得分:1)
我认为使用ping命令验证服务器的可访问性比使用traceroute更好。
很容易检查ping命令的返回状态而不使用任何grep:
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
done