[英]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.