linux中shell檢查字串是不是有效ip

來源:互聯網
上載者:User

例子

 代碼如下 複製代碼

zj@zj:~/Script/cushell/08.11.04$ cat checkip.sh
view plainprint?
#!/bin/bash 
 
 
printerr () { 
        echo "incorrect IP format." 
        readip 
        chkip 

 
readip () { 
        read -p "Your IP: " IP 

 
chkip () { 
        echo "$IP" | grep -Eq '[^0-9.]|^\.|\.$|^0*\.|\.\.' && printerr 
        [ $(echo -e "${IP//./\n}" | wc -l) -ne 4 ] && printerr 
        for i in ${IP//./ } ; do 
                echo $i | grep -Eq "^0+[^0]" && printerr 
                [ $((10#$i/8)) -gt 31 ] && printerr 
 
        done 

 
if [ "$1" ]; then 
        IP=$1 
else 
        readip 
fi 
chkip 
echo "$IP is good!" 

解釋下:

grep -Eq '[^0-9.]|^\.|\.$|^0*\.|\.\.'
[^0-9.]是不是有除了0-9與.之外的字元
^\.|\.$  以.開頭 or 以.結尾
^0*\.|\.\. 以0開頭 or 連續兩個.
以上三種情況都是錯誤的哦,所以就printerr

echo -e "${IP//./\n}" | wc -l說實話前面那種替換我也是first time.就是講.替換為換行,3個點就是4行了哦.不是3個點也就printerr

$((10#$i/8)) -gt 31 這個就是判斷是不是<=255的了,當然你也可以自己修改成$i -gt 255

OK解釋完畢^_^

 代碼如下 複製代碼

zj@zj:~/Script/cushell/08.11.04$ ./checkip.sh 1.2.3.4
1.2.3.4 is
zj@zj:~/Script/cushell/08.11.04$ ./checkip.sh 01.2.3.4
incorrect IP format.
Your IP: a.b.a.d
incorrect IP format.
Your IP: 266.1.1.1
incorrect IP format.
Your IP: 244.255.255.255
244.255.255.255 is

例子2、使用shell校正IP地址合法性

使用方法:

 代碼如下 複製代碼


[root@yang python]# bash check_ip.sh IP地址

執行結果:傳回值0校正合法,非0不合法。

shell代碼:

 代碼如下 複製代碼

[root@yang python]# vi check_ip.sh
#!/usr/bin/sh
CheckIPAddr()
{
echo $1|grep "^[0-9]\{1,3\}\.\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}$" > /dev/null;
#IP地址必須為全數字
        if [ $? -ne 0 ]
        then
                return 1
        fi
        ipaddr=$1
        a=`echo $ipaddr|awk -F . '{print $1}'`  #以"."分隔,取出每個列的值
        b=`echo $ipaddr|awk -F . '{print $2}'`
        c=`echo $ipaddr|awk -F . '{print $3}'`
        d=`echo $ipaddr|awk -F . '{print $4}'`
        for num in $a $b $c $d
        do
                if [ $num -gt 255 ] || [ $num -lt 0 ]    #每個數值必須在0-255之間
                then
                        return 1
                fi
        done
                return 0
}
if [ $# -ne 1 ];then            #判斷傳參數量
        echo "Usage: $0 ipaddress."
        exit
else
CheckIPAddr $1
fi

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.