Ping
如何清理/刷新網站儲存的 IP 資訊?
我正在嘗試使用 shell 腳本檢查我是否連接到網際網路。我認為我可以通過使用ping命令來做到這一點,因為如果 ping 成功,括號內有一個 IP 資訊。如果沒有括號,那麼我使用cut命令分配一個特定的變數,如果是這種情況,該變數將變為空。
所以我寫了下面的程式碼:
echo " First check whether internet is working or not : " internetCheck=$(ping -c 1 google.com | cut -s -d "(" -f1) if [ -z "$internetCheck" ]; then echo "NO INTERNET CONNECTION FOUND !" else echo "[ OK ] Internet is connected.\n" fi
它奏效了。但是,當我關閉連接並為同一網站(google.com)重複腳本時,系統(?)會記住最後一個 ping 命令的結果,因此它會失敗。如何清理/刷新以前的 ping 結果?
更好的測試,不需要grep…
echo " First check whether internet is working or not : " if ping -q -c 1 <host> > /dev/null 2>&1 ; then echo "[ OK ] Internet is connected.\n" else echo "NO INTERNET CONNECTION FOUND !" fi
將名稱轉換為 IP 地址通常由本地 DNS 解析器完成,並且確實被記憶體了。這就是為什麼即使您沒有連接也可以獲得地址的原因。
尋找更好的方法是
100% packet loss
,這裡是您的腳本的修改版本。echo " First check whether internet is working or not : " if ping -c 1 google.com | grep -qE '100% packet loss|Temporary failure in name resolution' ; then echo "NO INTERNET CONNECTION FOUND !" else echo "[ OK ] Internet is connected.\n" fi