欢迎访问宙启技术站
智能推送

Shell脚本中如何判断IP地址合法性

发布时间:2023-05-16 06:20:52

在Shell脚本中,判断IP地址的合法性主要通过以下两种方法实现:

1.使用正则表达式

正则表达式可以很方便地匹配IP地址的格式。在Shell脚本中,我们可以使用grep命令来匹配正则表达式,例如:

#!/bin/bash

# 判断IP地址是否合法
function check_ip() {
    IP=$1
    # 利用正则表达式匹配IP地址的格式,如果不符合则返回错误
    if [[ ! $IP =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
        echo "INVALID IP ADDRESS"
        exit 1
    else
        # 将IP地址按照“.”分割成四段
        IFS='.' read -r -a IPS <<< "$IP"
        # 循环判断每一段IP地址的数值是否合法
        for i in "${IPS[@]}"
        do
            # 如果数值超过255或者不是数字,则返回错误
            if ! [[ $i -ge 0 && $i -le 255 ]] || ! [[ $i =~ ^[0-9]+$ ]]; then
                echo "INVALID IP ADDRESS"
                exit 1
            fi
        done
        echo "VALID IP ADDRESS"
        exit 0
    fi
}

check_ip 192.168.0.1 # VALID IP ADDRESS
check_ip 192.168.0.256 # INVALID IP ADDRESS
check_ip 192.a68.b0.c2 # INVALID IP ADDRESS

上面的脚本中,使用正则表达式匹配IP地址的格式,如果不符合则返回错误。然后将IP地址按照“.”分割成四段,循环判断每一段IP地址的数值是否合法,如果数值超过255或者不是数字,则返回错误。

2.使用ipcalc命令

ipcalc是一个Linux下的命令行工具,用来计算IP地址和子网掩码等信息。我们可以使用ipcalc命令来判断IP地址的合法性,例如:

#!/bin/bash

# 判断IP地址是否合法
function check_ip() {
    IP=$1
    # 使用ipcalc命令计算IP地址的信息,如果返回错误,则说明IP地址不合法
    if ! ipcalc -c "$IP" > /dev/null 2>&1; then
        echo "INVALID IP ADDRESS"
        exit 1
    else
        echo "VALID IP ADDRESS"
        exit 0
    fi
}

check_ip 192.168.0.1 # VALID IP ADDRESS
check_ip 192.168.0.256 # INVALID IP ADDRESS
check_ip 192.a68.b0.c2 # INVALID IP ADDRESS

上面的脚本中,使用ipcalc命令计算IP地址的信息,如果返回错误,则说明IP地址不合法。如果没有返回错误,则说明IP地址合法。这种方法比起使用正则表达式要更加简单,但是需要在系统中安装ipcalc命令。