简单的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.178linux.com/70381

(1)
wodewode
上一篇 2017-03-02 14:58
下一篇 2017-03-03 15:36

相关推荐

  • N25期—第四周作业

    1、 复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 cp –rf /etc/skel /home/tuser1 chmod -R go= /home/tuser1 2、 编辑/etc/group文件,添加组hado…

    Linux干货 2016-12-26
  • Linux下/proc目录详解

    Linux下/proc目录详解 proc目录总的概述 proc下有关进程的目录概述 proc下针对Linux系统相关的参数目录概述 /proc目录总的概述 1.首先,我们可以使用ll命令查看下/proc目录,如下 [root@centos6 ~]# ls -l /proc total 0 dr-xr-xr-x. 8 root root 0 May 19 04…

    Linux干货 2017-05-20
  • 集群基本介绍

    Linux Cluster: Cluster:计算机集合,为解决某个特定问题组合起来形成的单个系统; Linux Cluster类型: LB:Load Balancing,负载均衡;主机来平均访问的压力。由负载均衡器和多个后端主机分担主。 HA:High Availiablity,高可用,靠冗余节点实现;提高服务的可用性,有多个负载均衡器(和备份)来接收来自…

    Linux干货 2016-10-30
  • Linux基础之加密通讯过程详解

    加密通讯过程详解 第一阶段 客户端->服务器端 向服务器声明自己的加密通讯协议版本,ssl或者tls 支持的加密算法 支持的压缩算法 第二阶段 服务器端->客户端 向客户端确认使用的加密通讯协议版本 确认的加密方法 确认压缩方法 服务器端证书 第三阶段 客户端->服务器端 客户端验证服务器端证书 发证机构 证书完整性 证书持有者 证书有效期…

    2017-09-16
  • samba应用

    samba详解 前言 前面学过了NFS,是一个网络文件系统,可以让远程连接像访问本地文件一样,在同一个网络上的多个用户间共享目录和文件系统。只不过NFS只是针对于两个linux主机,我们现在需要linux主机和windows主机都能共享,这个时候就用到了samba。 1、步骤,允许个别用户访问 1、安装下面三个包: samba samba-common sa…

    Linux干货 2016-12-21
  • 第一周课程练习

    马哥教育网络班22期+第一周课程练习 1、描述计算机的组成及其功能   CPU(运算器和控制器),存储器(内存和外存),输入/输出设备。     (1)运算器:对数据进行加工处理(包括算术运算与逻辑运算);     (2)控制器:负责从存储器取出一条指令,并指出下一条指…

    Linux干货 2016-08-15

评论列表(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的格式