簡單的bash腳本查看任意網段的在線主機

一前言

        最近看到許多同志在寫ping某個地址段的bash腳本,我也心血來潮來了一發。  當然本人新手,大神勿噴。

二準備工作  

        linux系統的機器一臺,當然虛擬機也可以,只要將網卡配置為橋接模式,可以連通其他局域網的主機即可。

        1.實驗環境  Centos 7.X 虛擬機  軟件 bash  ping

        2.說明  首先系統當然是任何 linux類或類linux的機器都是可以的 虛擬機安裝完成后首先配置網卡

        簡單的bash腳本查看任意網段的在線主機

        BOOTPROTO    我這里使用的是靜態的IP地址當然你也可以使用靜態ip

        ONBOOT         是否啟用網卡 改為yes不然重啟機器后網卡又失效了

        IPADDR          我這里是使用的靜態IP如果你的BOOTPROTO使用的是dhcp可以不用改這里

        PREFIX           子網掩碼的位數我這里使用的是172.18.0.0網段所以子網掩碼是16位如果你的BOOTPROTO使用的是dhcp可以不用改這里

        GATEWAY       默認網段不多解釋如果你的BOOTPROTO使用的是dhcp可以不用改這里

        DNS1             DNS地址用來解析域名的如果你沒設好吧你無法登陸www.baidu.com了除非你知道他的IP地址

        3.查看命令是否存在

        簡單的bash腳本查看任意網段的在線主機

         man了一下ping命令查看一下具體用法   由man可以得知  -c是指定ping的次數  -W指定超時時間  好的開始

        簡單的bash腳本查看任意網段的在線主機

三腳本 

         為了能讓各位安全使用我已經做了多次的測試  可能還有小bug歡迎致電

         腳本的內容如下:

        #!/bin/bash
        #Auther:xiaowu
        #Dtion:ping dao ni
        #Vsion:2.3
        declare -i Inet
        declare -i Snet
        [[ $1 =~ ([0-9]{1,3}\.){3}([0-9]{1,3})\/(2[4-9]|3[0-2]) ]]  #正則表達式驗證是否為正確格式
        if [ $? -ne 0 ] ;then                               #判斷格式是否配正確匹配
        {
            echo ” Usage:$0 172.18.0.0/24-32.”              #如果格式未被正確匹配返回250狀態碼,并提示使用方法
            exit 250
        }
        fi
        Inet=`echo “$1″ | cut -d”.” -f4 | cut -d”/” -f1`    #獲取Ip地址位
        Iseg=`echo “$1″ | cut -d”/” -f2`                    #獲取子網掩碼位
        Ipv4=`echo “$1″ | cut -d”.” -f1,2,3`                #獲取主機位
        echo “子網掩碼的位數為:$Iseg”                      #輸出子網掩碼
        echo “Ipv4的首個地址為:$Inet”                      #輸出網絡地址位
        echo “查看的網段地址為:$Ipv4”                      #輸出匹配的網絡位
        let Smask=32-$Iseg                                  #計算子網掩碼反掩碼位數
        echo “反向子網掩碼位為:$Smask”                     #輸出反掩碼位數
        Sips=$[2**$Smask]                                   #計算出指定網絡的IP數
        echo “要查找的地址數為:$Sips”                      #輸出主機個數
        Snet=$[ $Inet + $Sips -1 ]                          #從指定主機數到輸出的主機個數
        if [ $Snet -gt 255 ] ;then                          #當地址數溢出時的補救措施    
        {
            Snet=255                                        #主機數強制為255個
        }
        fi
        for i in `seq $Inet $Snet`;                         #for循環從指定主機開始到指定網段結束的IP個數
        do
            ping -c1 -W1 $Ipv4.$i >/dev/null 2>&1  && echo -e  “\033[32m$Ipv4.$i is \tup \033[0m” || echo -e  “$Ipv4.$i is\033[31m \tdown \033[0m”
                                                    #ping 判斷主機是在線還是 不在線
        done
        unset Inet Iseq Ipv4 wjy  Smask Sips Snet           #釋放上邊使用到的變量

        使用方法  標準的IP地址/子網掩碼的位數  譬如:172.18.252.0/24   172.18.253.20/28   172.18.6.110/30

        主要是根據子網掩碼來計算需要ping的主機個數  適用于經過子網掩碼劃分過的網絡 最大支持/24 最多256個IP包括網絡位地址和主機位地址

        注:此腳本適用于任何網段  并不是僅限于172.18.0.0  因為作者是172.18.0.0網段的  所以沒有用其他的網段測試

        簡單的bash腳本查看任意網段的在線主機

        簡單的bash腳本查看任意網段的在線主機

        簡單的bash腳本查看任意網段的在線主機

        

        

        

        

原創文章,作者:wode,如若轉載,請注明出處:http://www.www58058.com/70381

(1)
wodewode
上一篇 2017-03-02
下一篇 2017-03-03

相關推薦

  • N25期—第一周作業

    1、描述計算機的組成及其功能 計算機五大組成部件:運算器、控制器、存儲器、輸入設備和輸出設備。 運算器和控制器統稱中央處理器(CPU)。  存儲器分成內存儲器和外存儲器兩大類。  外存儲器、輸入設備和輸出設備統稱為外部設備。  中央處理器(CPU)  計算機的中央處理器又稱為CPU,它是計算機的核心部分。主要由運算器和…

    Linux干貨 2016-12-04
  • 【推薦】Linux 簡單部署LAMP

    Linux 簡單部署LAMP: 實驗環境: 1、主機系統Centos6.7_X86_64 2、DNS&CA:192.168.3.10 3、LAMP安裝方式為rpm 4、主機IP:192.168.3.11提供web站點:     http://wp.neolinux.com     &nbsp…

    Linux干貨 2016-06-22
  • 項目實踐==虛擬主機及SSL通信(Blog 14)

    httpd-2.4及httpd-2.4實現

    2017-12-02
  • wordpress配置安裝

    1、首先進行lamp框架的搭建 服務器環境:Linux Centos 7.2.1511 64位 內存:2G  磁盤空間100GB IP地址:10.55.10.79 進行httpd,php,php-mysql,mariadb-server的安裝,安裝均使用yum安裝 ~]# yum -y install httpd php php-mysql mar…

    Linux干貨 2016-11-04
  • Linux救援模式

        學習了Linux的啟動流程,為了加深理解,今天做了如下的實驗:刪除掉Linux系統在啟動過程中比較重要的幾個文件,查看啟動時出現的現象。加深對知識的理解。學習機器因為某些文件的缺失的修復方式。     一、刪除grub.conf    &nb…

    Linux干貨 2016-11-23
  • CentOS下命令基礎練習

    馬哥教育網絡班23期+第五周課堂作業 CentOS下命令基礎練習 1、顯示當前系統上root、fdeora或user1用戶的默認shell 2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:hello() 3、使用echo命令輸出一個絕對路徑 使用grep取出其基名 擴展:取出其路徑名 (…

    Linux干貨 2016-10-24

評論列表(3條)

  • switch
    switch 2017-03-02 23:04

    了解了一些IP設置當中一些參數所帶表的東西。腳本內容理解不了,等再多些知識再回頭看,不過功能實用,先收藏。

  • JL
    JL 2017-03-03 17:47

    你試試把172.018.252.0/24 作為參數, 也是可以運行的. 格式正確了,但是忽略了010.172.001.0這種格式.

    • wode
      wode 2017-03-03 23:24

      @JL[[ $1 =~ ((2[0-4][0-9]|25[0-5]|1?[0-9]?[0-9])\.){3}(2[0-4][0-9]|25[0-5]|1?[0-9]?[0-9])\/(2[4-9]|3[0-2]) ]] 改變之后的正則表達式 這個可以正確的匹配IP的格式

欧美性久久久久