【shell脚本】之ping地址段ip

脚本说明

1、脚本支持识别0.0.0.0-255.255.255.255范围的ip段
2、本文脚本只支持ping 16位和24位网段的ip(其他的段以此脚本判断ip地址用for循环或者for嵌套for循环实现ping地址)
3、脚本会在脚本目录下创建两个文件,一个是可以ping通ip的记录文件,一个是ping不通的(可以在开脚本开始判断文件然后删除文件,每次执行后的数据加到文件里)

代码如下
#!/bin/bash
read -p "请输入正确的网段(eg:192.168.0.0/24):" num
#grep匹配ip地址(0.0.0.0-255.255.255.255)
#由于正则表达式匹配数字是[0-9]的范围(可以[0-5],[2-7]),所以把ip分为一位数(0-9),两位数(10-99),三位数(100-255),三位数100-255不可以直接匹配又分为100-199(1开头的三位数)和200-255,又把200-255分为200-249和250-255,整体分为0-9,10-99,100-199,200-249,250-255
#正则:1[0-9]{2},代表1开头后面一位是0-9,匹配两次({1,3}代表匹配1到3次)
#正则:|代表或
echo $num |grep -E "((1[0-9][0-9]\.)|(2[0-4][0-9]\.)|(25[0-5]\.)|([1-9][0-9]\.)|([0-9]\.)){3}((1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])|([1-9][0-9])|([0-9]))\/(1[6-9]|2[0-9]|3[1-2])" &>/dev/null
ec=`echo $?`
if [ $ec -eq 0 ];then
   num2=`echo $num |awk -F "/" '{print $1" "$2}'`
   mask=`echo $num2 |awk '{print $2}'`
   num3=`echo $num2 |awk '{print $1}'`
    ip1=`echo $num3 |awk -F "."  '{print $1}'`
    ip2=`echo $num3 |awk -F "."  '{print $2}'`
    ip3=`echo $num3 |awk -F "."  '{print $3}'`
    ip4=`echo $num3 |awk -F "."  '{print $4}'`
else
  echo "输入有误,请输入正确的网段(eg:192.168.0.0/24)"
  exit
fi

if [ $mask -eq 16 ]&&[ $ip3 -eq 0 ]&&[ $ip4 -eq 0 ];then
      for i in {0..2}
      do
        for i2 in {0..2}
        do
           ping -c 1 $ip1.$ip2.$i.$i2 &>/dev/null
           jieguo16=`echo $?`
           if [ $jieguo16 -eq 0 ];then
               echo "ping $ip1.$ip2.$i.$i2 is OK" >>pingok
           else
             echo "ping $ip1.$ip2.$i.$i2 is not OK" >>pingnotok
           fi
        done
      done
elif [ $mask -eq 24 ]&&[ $ip4 -eq 0 ];then
       for i24 in {0..2}
       do
          ping -c 1 $ip1.$ip2.$ip3.$i24 &>/dev/null
          jieguo24=`echo $?`
          if [ $jieguo24 -eq 0 ];then
               echo "ping $ip1.$ip2.$ip3.$i24 is OK" >>pingok
          else
               echo "ping $ip1.$ip2.$ip3.$i24 is not OK" >>pingnotok
          fi
       done
else

      echo "输入有误,请输入正确的网段(eg:192.168.0.0/24)"
      exit
fi
脚本效果

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值