編寫shell腳本,測試某網段內主機連通性:
1.測試192.168.4.0/24整個網段的連通性(while版本)
2.測試192.168.4.0/24整個網段的連通性(for版本)
3.測試192.168.4.0/24整個網段的連通性(多進程版本)shell
++++++++++++++++++++++++++++++++++++++++++++++++++
bash
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版本)ide
#!/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第二臺主機,依次類推。