Linux shell判断IP合法性具体方法

树叶云

运维角度来说,写shell脚本经常会遇到判断输入的值是否合法,比如IP、邮件地址等。那么,根据自身写脚本中总结的判断IP合法性脚本分享给网友,遇到时能有所参考。

思路:IP由四位数字组成,以点分割,每个字段不能大于255,必须符合这种格式。

方法1:

#!/bin/bash    function check_ip() {  
   IP=$1  
   VALID_CHECK=$(echo $IP|awk -F. '$1)      if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/null; then          if [ ${VALID_CHECK:-no} == "yes" ]; then              echo "IP $IP available."          else              echo "IP $IP not available!"          fi      else          echo "IP format error!"      fi   }   # Example   check_ip 192.168.1.1   check_ip 256.1.1.1 

方法2:

#!/bin/bash    function check_ip() {  
   IP=$1  
   if [[ $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then  
       FIELD1=$(echo $IP|cut -d. -f1)  
       FIELD2=$(echo $IP|cut -d. -f2)  
       FIELD3=$(echo $IP|cut -d. -f3)  
       FIELD4=$(echo $IP|cut -d. -f4)  
       if [ $FIELD1 -le 255 -a $FIELD2 -le 255 -a $FIELD3 -le 255 -a $FIELD4 -le 255 ]; then  
           echo "IP $IP available."  
       else  
           echo "IP $IP not available!"  
       fi  
   else  
       echo "IP format error!"  
   fi   }  
# Example  
check_ip 192.168.1.1  
check_ip 256.1.1.1

加个循环,如果错误则重新输入,直到正确:

#!/bin/bash    function check_ip() {  
   local IP=$1  
   VALID_CHECK=$(echo $IP|awk -F. '$1)      if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; then          if [ $VALID_CHECK == "yes" ]; then           echo "IP $IP  available!"              return 0          else              echo "IP $IP not available!"              return 1          fi      else          echo "IP format error!"          return 1      fi   }   while truedo      read -p "Please enter IP: " IP      check_ip $IP      [ $? -eq 0 ] && break   done

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/199137.html<

(0)
运维的头像运维
上一篇2025-04-04 17:00
下一篇 2025-04-04 17:01

相关推荐

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注