2017-07-15 90 views
0

我只是想寫一個小腳本來查看某些IP地址是否在線,作爲我的一個想法的鏈接,但我根本不知道什麼bash,想知道有沒有人能幫助我。這是有一個IP地址ping通的2倍,如果結果是說從Bash中的命令中獲取輸出

--- 127.0.0.1 ping statistics --- 
2 packets transmitted, 0 received, 100% packet loss, time 1007ms 

我會把它想echo "OFFLINE"去到執行ping下一個IP地址,而如果結果是說

--- 127.0.0.1 ping statistics --- 
2 packets transmitted, 2 received, 0% packet loss, time 1001ms 

我希望得到echo "ONLINE"並繼續到下一個IP地址。

那麼是否有任何方法來獲取ping的輸出並使用它來確定回顯?

回答

2

您可以使用ping的退出狀態。如果能ping通目標,將返回0(即成功),否則返回1。所以,你可以做

if ping -c 2 -q host1 &>/dev/null; then 
    echo "ONLINE" 
else 
    echo "OFFLINE" 
fi 

,但如果你想捕捉的命令,你可以使用命令替換像

ping_output="$(ping -c2 host1)" 

其中命令的內部$(...)輸出將被保存在變量的輸出,這裏命名ping_output

,或者如果你想使用grep,看看是否出現串在輸出中你可以管它:

if ping -c 2 host1 | grep -q " 0% packet loss"; then 
    echo ONLINE 
else 
    echo OFFLINE 
fi 

我們使用-q到grep,所以它不會打印匹配

+0

這解決了我的問題行了,謝謝。 – John