序言:
Windows系統中批量Ping地址時我們常用PingInfoView工具,簡單方便實用;而linux中想批量pingIP地址,就得使用腳本了,這裡小編和大家分享一個ping腳本。
首先奉上shell腳本,不想編寫的可以私信聯系獲取shell腳本,直接拷貝到centos中運行。
#! /bin/bash
for i in `cat iplist`
do
ping=`ping -c 3 $i|grep loss|awk '{print $6}'|awk -F "%" '{print $1}'`
if [ $ping -eq 0 ];then
echo ping $i ok
else
echo ping $i fail
fi
done
命令解釋:
1、ping.sh腳本和腳本中要讀取IP地址的iplist文件在同一個目錄。
2、使用awk命令提取ping IP返回後丢失loss的百分比數字是100還是0。
ping.sh腳本第4行詳解:
ps:這邊因為-c 3是ping3個包,且不考慮有丢包的情況,也可以直接-c 1,直接ping 1個包。
3、if語句是比較awk取的值是否為0的,也有比較100的,理論是一樣的。但是我自己測試ping IP地址有3種返回值。
第一種、網絡正常,0%丢包。
第6列awk命令提取的值為0
第二種、網絡不通,100%丢包。
第6列awk命令提取的值為100
第三種、網絡不通,100%丢包,但中間多了2列參數。
第6列awk命令提取的值為 3綜上所述,awk命令第一次使用時取第6列值,且和數值0比較(if=0網絡ok,else網絡fail),前面兩種是沒問題,遇到第3種情況: 3是≠0的,滿足else條件,網絡fail;若awk取值與100比較(if=100網絡fail,else網絡ok),前面兩種是沒問題,那麼遇到第三種結果為: 3≠100,所以滿足else結果,網絡ok,但其實上圖的192.168.3.254是ping不通的。結論:所以if語句應該和數值0比較,這樣更準确。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!