簡單的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 14:58
下一篇 2017-03-03 15:36

相關推薦

  • shell編程及小命令

    1. ping 10.1.252.25d2 -c1 -w1 &> /dev/null && echo "The host is up" || echo "The host is down" 2. 在vim命令中, p或則P可以實現復制。     p: 復制到下一行 &n…

    Linux干貨 2016-08-12
  • 0804正則表達式作業

    用正則表達式表示IP地址         首先來分析一下,制IP地址是一個32位的二進制數,通常被分割為4個“8位二進制數”(也就是4個字節)。IP地址通常用“點分十進制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之間的十進制整數。例:點分十進IP地址(1…

    Linux干貨 2016-08-10
  • 胡說八道計算機網絡之什么是網絡(一)?

    胡說八道計算機網絡之什么是網絡(一) 什么是網絡? 網絡通信的實現:tcp/ip協議 使用Wireshark抓包分析tcp/ip協議棧 什么是網絡?      所謂網絡,就是通過一定的形式連接起來的物體,物體與物體之間可以實現通信。     比如這樣的,就稱為計算機網絡。它可以實現計算機之…

    Linux干貨 2017-05-01
  • linux文件權限

                                                      &nbsp…

    Linux干貨 2016-08-04
  • 邏輯卷LVM練習題

    ? 2、新建用戶archlinux,要求其家目錄為/users/archlinux ,而后su切換至archlinux用戶,復制/etc/pam.d目錄至自己 的家目錄 [root@Cloud /]#useradd -d /users/archlinux archlinux #新建用戶archlinux [archlinux@Cloud ~]# getent…

    Linux干貨 2017-03-16
  • 跟著vimtutor走來認識vim

        一、前言        VIM是一款在vi上進行改進的功能性強大的,開源的文本編輯器。     二、vim的設計理念     vim的設計理念是組合;       命令組合:類似于linux的由一個個單一功能的程…

    Linux干貨 2016-05-13

評論列表(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的格式

欧美性久久久久