每天晚上,我都要检查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/

10-14 14:27