Linux Shell脚本中对IP、子网掩码和网关的有效性判断[转] 您所在的位置:网站首页 MAC地址比较器 Linux Shell脚本中对IP、子网掩码和网关的有效性判断[转]

Linux Shell脚本中对IP、子网掩码和网关的有效性判断[转]

2024-04-20 05:40| 来源: 网络整理| 查看: 265

 以下示例只是提供一些思路和简易的方法。请参考使用。以下代码在bash中验证通过,如果使用其它shell请自行调整。

1:IP格式效性判断

 

1 #return 1(failure) invalid ip,0(success) valid ip 2 is_valid_ip_format() 3 { 4 if [[ "$1" =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]] ;then 5 return 0 6 else 7 return 1 8 fi 9 }

 

补充说明:

 

if判断语句中使用shell的正则表达式,请注意,在正则表达式上是不需要加引号的!这是shell的新特性,网上有类似语句但是无法使用就是因为在正则表达式上加了引号。

 

2:IP冲突检测

 

1 #return 1(failure) conflict,0(success) not conflict 2 is_ip_conflict() 3 { 4 conflict=`ping -c 2 -t 1 $1 >/dev/null 2>&1 && arp $1` 5 if [ -z "$conflict" ];then 6 return 0 7 else 8 return 1 9 fi 10 }

 

补充说明:

 

IP冲突检测看起来是一个很复杂的问题,其实在TCP/IP协议中,IP冲突检测是ARP协议的一个额外功能,原理很简单,使用ARP协议向网络中广播自己的IP地址,如果收到响应则存在IP冲突,这个功能在TCP/IP协议第一卷ARP协议一章有详细介绍。这里先使用ping命令来探测一下设定的IP地址,然后在ARP缓存中查找是否存在有效的记录,如果有则存在IP冲突。这里不用关心ping命令是否能成功,不论是否成功,只要机器开着,ARP都能获取到其MAC地址,因为ARP工作在数据链路层。

 

3:子网掩码验证

1 #return 1(failure) is not a valid mask,0(success) is a valid mask 2 is_valid_mask() 3 { 4 nm=$(aton $1) 5 6 bit=1 7 flag=0 8 for i in {0..31} 9 do 10 v=$(( $bit


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有