當資料包丟失> 70 我看到它時需要重啟調制解調器的腳本:
a="$(ping -c10 "host" | awk 'END{print}' | awk '{ print $7 }' | sed s/%//g)";
b=70;
if [ "$a" -gt "$b" ]; then
echo "trouble ping" #reboot modem
else
echo "ping ok"
fi
當主機沒有首先回答 str = 100 (沒有“%”)時它是正確的,但是當他回答時輸出為空(為什么不是 0),我無法理解原因
uj5u.com熱心網友回復:
ping0% packet loss當有and時在我的系統上輸出100% packet loss:
$ ping -c10 yahoo.com
PING yahoo.com (98.137.11.164): 56 data bytes
64 bytes from 98.137.11.164: icmp_seq=0 ttl=53 time=75.890 ms
... snip ...
64 bytes from 98.137.11.164: icmp_seq=9 ttl=53 time=75.553 ms
--- yahoo.com ping statistics ---
10 packets transmitted, 10 packets received, 0% packet loss
round-trip min/avg/max/stddev = 73.983/76.589/78.678/1.682 ms
$ ping -c10 yahoo.com
PING yahoo.com (74.6.143.25): 56 data bytes
--- yahoo.com ping statistics ---
10 packets transmitted, 0 packets received, 100% packet loss
packet loss搜索字串然后獲取第 7 個(空格分隔)欄位可能更有意義,例如:
ping -c10 "host" | awk '/packet loss/{print int($7 0)}'
當應用于上面的 2x 場景時,分別生成0和。100
筆記:
- 在
awk代碼中$7 0具有去除尾隨非數字字符(例如,%)的效果 - 在
awk代碼中,int()我們只生成一個整數(以防萬一ping生成一個浮點/實數值);bash僅適用于整數,因此我們需要確保僅將整數傳遞回呼叫行程 - OP 可能需要額外的邏輯來處理
ping走動的命令,例如,生成錯誤 (ping: unknown host)、不生成任何內容、掛起等
uj5u.com熱心網友回復:
出現在另一邊
a="$(ping -c10 "host" | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')";
b=7;
if [ "$b" -gt "$a" ]; then
echo "trouble ping"
else
echo "ping ok"
fi
無論如何它的作業我需要
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/520112.html
標籤:linux重击忙箱
上一篇:bash陣列轉換成字串模式
下一篇:bash僅列印最后7個欄位
