檢測網段線上主機的shell指令碼

來源:互聯網
上載者:User

作業四:

寫一個指令碼:

實現ping C類網段,B類網段和A類網段內的所有主機;

網段地址讓使用者輸入,而且通過指令碼判斷網段類型;

#!/bin/bash  #Author: MOS  #Script name: funPing.sh  #Date & Time: 2012-10-09/21:53:09  #Version: 1.0.1  #Description:  #  #定義C類網段處理函數  net_C(){  #定義統計不線上IP數量的變數      declare -i Fail=0  #產生C類網的最後位IP,迴圈ping      for i in `seq 1 254`;do#ping只發送一個,只等待1秒,得到的所有資訊並扔掉,僅去邏輯值          if ping -c 1 -W 1 $1.$i &> /dev/null ;then               echo "Online $1.$i"        else            let Fail++          fi      done      echo "No Online PC, Number is $Fail"}  net_B(){  #截取B類網的網段      Bip=`echo $1|cut -d'.' -f1-2`      declare -i Fail=0  #迴圈產生B類網第三段      for i in `seq 0 254`;do        Res="$Bip.$i"#迴圈產生B類網第四段          for r in `seq 1 254`;do            if ping -c 1 -W 1 $Res.$r &> /dev/null ;then                      echo "Online $Res.$r"            else                let Fail++              fi          done      done      echo "No Online PC, Number is $Fail"}  net_A(){      Bip=`echo $1|cut -d'.' -f1`      declare -i Fail=0  #產生A類網的第二段,第三段和第四段以此類推      for i in `seq 0 254`;do        Res="$Bip.$i"        for r in `seq 0 254`;do            Res1="$Res.$r"            for l in `seq 1 254`;do                if ping -c 1 -W 1 $Res1.$l &> /dev/null ;then                         echo "Online $Res1.$l"                else                    let Fail++                  fi              done          done      done      echo "No Online PC, Number is $Fail"}  read -p "Please input subset:" Ip  #判斷輸入IP段落是否合法  if [[ $Ip =~ ^([2-9]|[1-9][0-9]|1[0-9][0-9]|2[01][0-9]|22[0-3])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])$ ]];then#合法,則取出第一個欄位,屬於哪類網      Mask=`echo "$Ip"|cut -d"." -f1`  #如果是A類網,則調用net_A函數,依次類推      [ $Mask -lt 128 ] && net_A $Ip      [ $Mask -lt 192 -a $Mask -gt 127 ] && net_B $Ip      [ $Mask -gt 191 ] && net_C $Ip      else#如果輸入IP錯誤,則報錯資訊如下  echo "Error! $Ip invalid."fi

如果要使用以上代碼,要謹慎...尤其是A類網和B類網...255*255*255的資源開銷,您自己琢磨....呃,如果僅供測試的話,可以把結果輸出到檔案,放到後台執行,或者僅測試特定IP的話,您可以把for迴圈中seq的產生數字,修改一下,也是沒問題的.....

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.