shell腳本之測試某網段內主機連通性

編寫shell腳本,測試某網段內主機連通性:
1.測試192.168.4.0/24整個網段的連通性(while版本)
2.測試192.168.4.0/24整個網段的連通性(for版本)
3.測試192.168.4.0/24整個網段的連通性(多進程版本)

++++++++++++++++++++++++++++++++++++++++++++++++++

1.測試192.168.4.0/24整個網段的連通性(while版本)

#!/bin/bash
#Author:丁丁歷險(Jacob)
#定義變量i控制循環次數,i從1開始循環,每循環一次,i自加1,直到i等於254循環退出
#在每次循環中對一個IP進行ping測試,如果ping通,提示主機是UP的
#如果無法ping同,則提示主機是down的
#ping命令的-c選項控制ping測試的次數,-c2表示對目標主機執行2次ping測試
#ping命令的-i選項,控制多次ping測試的間隔時間默認爲1秒,-i0.3可以提升ping的測試效率
#ping命令的-W選項,可以控制超時時間,默認一個主機無法ping通,需要等很長的超時時間,
#纔會提示無法ping通,使用-W1,設置超時時間爲1秒。
i=1
while  [ $i  -le  254 ]
do
          ping -c2 -i0.3 -W1 192.168.4.$i  &>/dev/null
         if [ $? –eq 0 ];then
               echo "192.168.4.$i is up"
         else
               echo  "192.168.4.$i is down"
         fi
         let i++
done

2. 測試192.168.4.0/24整個網段的連通性(for版本)

#!/bin/bash
#Author:丁丁歷險(Jacob)
#定義for循環變量i,執行循環次數爲254次,i從1循環到254
#每次循環對某一臺目標主機測試ping的連通性,ping命令的語法格式參考前面的while版本
for  i in  {1..254}
do
          ping -c2 -i0.3 -W1 192.168.4.$i  &>/dev/null
         if [ $? –eq 0 ];then
               echo "192.168.4.$i is up"
         else
               echo  "192.168.4.$i is down"
         fi
done

3. 測試192.168.4.0/24整個網段的連通性(多進程版本)

#!/bin/bash
#Author:丁丁歷險(Jacob)
#定義一個函數,ping某一臺主機,並檢測主機的存活狀態,ping語法格式參考前面的while版本
myping(){
ping -c2 -i0.3 -W1 $1  &>/dev/null
if  [ $? -eq 0 ];then
echo "$1 is up"
else
echo "$1 is down"
fi
}
for  i in   {1..254}
do
         myping 192.168.4.$i &
done
#使用&符號,將執行的函數放入後臺執行
#這樣做的好處是不需要等待ping第一臺主機的迴應,就可以繼續併發ping第二臺主機,依次類推。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章