簡體   English   中英

用bash繼續grep獲取traceroute結果

[英]Continue to grep for traceroute result with bash

每天晚上,我都要經歷檢查T1的故障轉移系統的相同過程。 我基本上要經歷以下過程:

啟動故障轉移過程。

traceroute $server;

一旦看到故障轉移,便可以通過SSH進入服務器來驗證連接是否正常。

ssh $server;

然后,一旦我看到它可以工作,就將其從故障轉移中移除。

因此,我要做的是連續運行traceroute,直到獲得特定結果,然后運行SSH命令。

將成功消息列表放入文件中(省略可變行和該行的分數,並使用^標識該行的開頭,如下所示:)

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地址,而是為下一次解析命名,從而導致誤報。

我認為使用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
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM