如何用shell判斷ip是否合法

2022-02-06 02:14:07 字數 3254 閱讀 8952

1樓:匿名使用者

#!/bin/bash

# test an ip address for validity:

# usage:

#      valid_ip ip_address

#      if [[ $? -eq 0 ]]; then echo good; else echo bad; fi

#   or

#      if valid_ip ip_address; then echo good; else echo bad; fi

#function valid_ip()

\.[0-9]\.[0-9]\.[0-9]$ ]]; then

oifs=$ifs

ifs='.'

ip=($ip)

ifs=$oifs

[[ $ -le 255 && $ -le 255 \

&& $ -le 255 && $ -le 255 ]]

stat=$?

fireturn $stat

}# if run directly, execute some tests.

if [[ "$(basename $0 .sh)" == 'valid_ip' ]]; then

ips='

4.2.2.2

a.b.c.d

192.168.1.1

0.0.0.0

255.255.255.255

255.255.255.256

192.168.0.1

192.168.0

1234.123.123.123

'for ip in $ips

doif valid_ip $ip; then stat='good'; else stat='bad'; fi

printf "%-20s: %s\n" "$ip" "$stat"

done

fi試試這個

2樓:匿名使用者

#/bin/bash

echo -n "請輸入ip地址 : "

read ip

ip1=`echo $ip|cut -d . -f 1`

ip2=`echo $ip|cut -d . -f 2`

ip3=`echo $ip|cut -d . -f 3`

ip4=`echo $ip|cut -d . -f 4`

a=`echo $ip|grep "\."`

if [[ -z "$ip1" ]];then

echo "ip error"

exit 8

fiif [[ ! -z "$ip1" ]] && [ $ip1 -lt 255 ];then

if [[ ! -z "$ip2" ]] && [ $ip2 -lt 255 ] ;then

if [[ ! -z "$ip3" ]] && [ $ip3 -lt 255 ] ;then

if [[ ! -z "$ip4" ]] && [ $ip4 -lt 255 ] && [ $ip4 -ne 0 ] && [ $ip4 -ne 255 ];then

echo "ip ok"

else

echo "ip error"

fielse

echo "ip error"

fielse

echo "ip error"

fielse

echo "ip error"fi

3樓:匿名使用者

雖然直接用正規表示式也可以,但是對於數字比較來說,正則不擅長。並且如果只寫一個正規表示式,只能知道ip是否正確,不能得到具體錯誤資訊

在shell中如何判斷字串是否為有效的ip地址

4樓:匿名使用者

checkipaddr()

\.\([0-9]\\.\)\[0-9]\$" > /dev/null;

#ip地址必須為全數字

if [ $? -ne 0 ]

then

return 1

fi ipaddr=$1

a=`echo $ipaddr|awk -f . ''` #以"."分隔,取出每個列的值

b=`echo $ipaddr|awk -f . ''`

c=`echo $ipaddr|awk -f . ''`

d=`echo $ipaddr|awk -f . ''`

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 $1fi

shell判斷輸入是否有效ip和字母

linux shell中編寫判斷ip地址有效性指令碼碰到了問題

5樓:匿名使用者

建議你先把這一堆邏輯判斷分開, 或者加一些除錯用的echo回顯 很快就能判斷出問題的

哎 雖然都是寫指令碼的, 可看到這個還是懶得去細看了 笨人的**風格就是不講究技巧 只講究清楚

關於linux的shell指令碼問題 50

6樓:匿名使用者

checkip $ipaddr && checkip $netmask && checkip $gateway //感覺有問題

關於一個設定ip地址的linux指令碼 50

7樓:baby神啊神

可以用這個匹配判斷ip地址,'\<(25[0-5]|2[0-4][0-9]|((1[0-9])|([1-9][0-9]))|[1-9])(\.(25[0-5]|2[0-4][0-9]|((1[0-9])|([1-9][0-9]))|[0-9]))\>'

8樓:匿名使用者

你那個if [ $?==1 ]有問題,shell裡是沒有==這種符號的,要麼用-eq,要麼用=,且=作判斷時兩邊都需空格,否則視為賦值。所以改為 if [ $?

= 1 ]或if [ $? -eq 1 ],你試試。

如何判斷自己是否得了肛瘻,如何自我判斷是否患了肛瘻

肛瘻的典型症狀主要有三個方面,肛周紅腫 疼痛,流膿和瘙癢。肛瘻是一個感染性的疾病,當膿液聚集在管腔內引流不通暢的時候,就會出現區域性的肛周紅腫 疼痛,只有當膿液流出以後,疼痛才能夠有所減輕。在肛瘻的初期流出來的膿液是比較多的,質地稠厚,味臭色黃,隨著膿液流出以後炎症消退了,然後疼痛才能夠有所減輕,膿...

如何判斷狗狗是否真的懷孕,如何判斷狗狗是否懷孕?

判定懷孕的方法有很多種,以下幾種方法可以幫助你判定是否懷孕了。第一種懷孕最直接的表現就是月經停止。如果你的月經週期正常的話,到了該來的時候還沒來你就可以考慮是否懷孕了。在月經沒來的基礎上,你可以去買試紙測一下,用早上的第一次尿檢測,顯示兩條紅槓的話就是懷孕了,一條槓的話就沒有懷孕。最後一種方法是最準...

shell中如何比較兩字串是否相等

bin bash a abc b def if a b then echo a is same as b else echo a is different from b fi bin bash filename is diffs.shif 2 then echo usage diffs.sh tex...