簡體   English   中英

如何驗證 IP 地址范圍(Shell 腳本)

[英]How to Validate IP address range (Shell Scripting)

我想弄清楚如何編輯這個腳本,以便它驗證一個 IP 范圍,而不僅僅是一個 IP,即 192.168.1.0/24。

echo "Target IP Address range or specific IP: "
read IPaddr

#IPv4 Validation
is_ip(){
local ip=$1

if expr "$ip" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' >/dev/null;then
    for i in 1 2 3 4;do
        if [ $(echo "$ip" | cut -d. -f$i) -gt 255 ];then
            return 1
        fi
    done
    return 0
else
    return 1
fi
}
#Test User-inputted IPv4 Address
is_ip "$IPaddr"
if [[ $? -eq 0 ]]; then
    echo "Valid IP address/range"
else
    echo "Invalid IPv4"
    exit 6
fi

如果我正確理解了您的問題,此腳本似乎可以滿足您的需求。

#!/bin/bash

locInput="$1"

locIP=${locInput%\/*}
if [[ $locInput = @(*/*) ]];then
        locRange=${locInput#*\/}
fi

function is_ip
{
if [[ $locIP == ?([0-9])+([0-9])\.?([0-9])+([0-9])\.?([0-9])+([0-9])\.?([0-9])+([0-9]) ]]; then
        locVerif=(${locIP//./ })
        for i in ${locVerif[*]}; do
                if [[ $i -lt 0 || $i -gt 255 ]]; then
                        return 1
                fi
        done
        if [[ -n $locRange && ($locRange -lt 0 || $locRange -gt 31) ]]; then
                return 1
        fi
        return 0
else
        return 1
fi

}

is_ip
if [[ $? -eq 1 ]]; then
        echo "Wrong IP/Range"
else
        echo "Good IP/Range"
fi

希望它能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM