linux查看主机脚本,简单的bash脚本查看任意网段的在线主机

一前言

最近看到许多同志在写ping某个地址段的bash脚本,我也心血来潮来了一发。  当然本人新手,大神勿喷。

二准备工作

linux系统的机器一台,当然虚拟机也可以,只要将网卡配置为桥接模式,可以连通其他局域网的主机即可。

1.实验环境  Centos 7.X 虚拟机  软件 bash  ping

2.说明  首先系统当然是任何 linux类或类linux的机器都是可以的 虚拟机安装完成后首先配置网卡

3c8ce6380daa33c267ccb0e2e66a02de.png

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.查看命令是否存在

3c8ce6380daa33c267ccb0e2e66a02de.png

man了一下ping命令查看一下具体用法   由man可以得知  -c是指定ping的次数  -W指定超时时间  好的开始

3c8ce6380daa33c267ccb0e2e66a02de.png

三脚本

为了能让各位安全使用我已经做了多次的测试  可能还有小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网段的  所以没有用其他的网段测试

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

原创文章,作者:wode,如若转载,请注明出处:http://www.178linux.com/70381

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值