首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用bash继续grep以获取traceroute结果

使用bash继续grep以获取traceroute结果
EN

Stack Overflow用户
提问于 2010-06-19 11:49:04
回答 2查看 2.1K关注 0票数 0

每天晚上,我都要检查T1的故障转移系统。我基本上经历了以下过程:

启动故障切换过程。

代码语言:javascript
复制
traceroute $server;

一旦我看到它被故障转移,我就通过SSHing验证到服务器的连接是否正常工作。

代码语言:javascript
复制
ssh $server;

然后,一旦我看到它工作了,我就把它从故障转移中移除。

因此,我想要做的是连续运行traceroute,直到得到某个结果,然后运行SSH命令。

EN

回答 2

Stack Overflow用户

发布于 2010-06-19 12:21:39

将成功的消息列表放入一个文件中(省略变量行和该行的小数部分,并使用^标识该行的开头,如下所示)

patterns.list:

代码语言:javascript
复制
^ 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循环:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2010-08-10 12:31:09

我认为您最好使用ping命令来验证服务器的可访问性,而不是traceroute。

无需使用任何grep即可轻松检查ping命令的返回状态:

代码语言:javascript
复制
if [ ping -c 4 -n -q 10.10.10.10 >/dev/null 2>& ]; then
    echo "Server is ok"
else
    echo "Server is down"
fi

如果你想在循环中不断地做这件事,试试这个:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3074250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档