每天晚上,我都要检查T1的故障转移系统。我基本上要经历以下过程:
启动故障转移过程。
traceroute $server;
一旦我看到它失败了,我就通过SSHing到服务器来验证连接是否正常。
ssh $server;
一旦我看到它起作用,我就将它从故障转移中移除。
所以我想做的是继续运行traceroute,直到得到某个结果,然后运行SSH命令。
最佳答案
将成功消息的列表放入文件中(省略变量行和行的小数,并使用^标识行的开头,如下所示:)
模式.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地址,而是得到下一次解析的名称,从而导致误报。
关于linux - 用bash继续grep获取traceroute结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3074250/