天天看點

linux+ping網絡腳本,使用ping指令檢測整個網段IP的網絡狀态的shell腳本(圖文)

通過ping網段中的IP位址,根據傳回的狀态資訊,判斷主機的網絡狀态。

下面分享兩個可以實作這個功能的shell腳本。

腳本1,

複制代碼 代碼示例:

#!/bin/sh

# Ping網段所有IP

# 2012/02/05

ip=1 #修改初值

while [ $ip != "254" ]; do

#yes正常,no主機不存在或不正常

ping 192.168.0.$ip -c 2 | grep -q "ttl=" && echo "192.168.0.$ip yes" || echo "192.168.0.$ip no"

ip=`expr "$ip" "+" "1"`

done

輸出結果:

192.168.0.1 yes

192.168.0.2 no

192.168.0.3 no

192.168.0.4 no

192.168.0.5 yes

192.168.0.6 no

192.168.0.7 yes

筆者在自己的網絡中測試的結果如下:

linux+ping網絡腳本,使用ping指令檢測整個網段IP的網絡狀态的shell腳本(圖文)

如果以上輸出全部為no的話,則可能主機上通過iptables禁用了ping。

腳本2,

複制代碼 代碼示例:

#!/bin/sh

# Ping網段所有IP

ip="192.168.0."

for i in `seq 1 254`

do

ping -c 2 $ip$i | grep -q 'ttl=' && echo "$ip$i yes"|| echo "$ip$i no"

#yes正常,no主機不存在或不正常

done

輸出結果:

192.168.0.1 yes

192.168.0.2 no

192.168.0.3 no

192.168.0.4 no

192.168.0.5 yes

192.168.0.6 no

192.168.0.7 yes

最後,介紹下用于ping多個域名的一段shell腳本。

通過ping指令,找出域名與IP位址的對應關系。

代碼如下:

複制代碼 代碼示例:

#!/bin/sh

# filename ping.sh

# edit by www.jquerycn.cn

for a in `cat list`;do

ping -c 1 $a;

done

運作腳本:

#./test.sh

代碼說明:

1,在運作腳本之前,建立list檔案,裡面寫入要檢測的域名,一行一個。

形如:

a.jquerycn.cn

b.jquerycn.cn

c.jquerycn.cn

...等等。2,-c 是ping的參數。-c 1 表示ping完成一次。

附,ping參考。

參  數:

-d 使用Socket的SO_DEBUG功能。

-c 設定完成要求回應的次數。

-f 極限檢測。

-i 指定收發資訊的間隔時間。

-I 使用指定的網絡界面送出資料包。

-l 設定在送出要求資訊之前,先行發出的資料包。

-n 隻輸出數值。

-p 設定填滿資料包的範本樣式。

-q 不顯示指令執行過程,開頭和結尾的相關資訊除外。

-r 忽略普通的Routing Table,直接将資料包送到遠端主機上。

-R 記錄路由過程。

-s 設定資料包的大小。

-t 設定存活數值TTL的大小。

-v 詳細顯示指令的執行過程。