亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址? [打印本頁]

作者: lwq315    時間: 2004-02-26 12:06
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
在一個Shell腳本里面如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
我實在想不出是怎么處理它輸入的東西.
作者: 網(wǎng)中人    時間: 2004-02-26 15:15
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
try:
  1. #!/bin/bash

  2. usage () {
  3.         echo "incorrect IP format."
  4.         chkip
  5. }

  6. chkip () {
  7.         read -p "Your IP: " IP
  8.         echo "$IP" | grep -q '[^0-9.]' && usage
  9.         [ $(echo -e "${IP//./\n}" | wc -l) -ne 4 ] && usage
  10.         for i in ${IP//./ } ; do
  11.                 [ $((i/8)) -lt 32 ] || usage
  12.         done
  13. }

  14. chkip
  15. echo "$IP is good!"
復(fù)制代碼

作者: bjgirl    時間: 2004-02-27 02:13
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
來個好麻煩點的
  1. #!/bin/ksh
  2. #
  3. n=1
  4. if ! echo $1|grep -q "[a-zA-Z!@#$%^&*()-_+=|\`~<>,/?]"
  5. then
  6. for i in x y z w;do
  7.         export ip$i=$(echo $1|cut -f$n -d".")
  8.         ((n+=1))
  9. done
  10. (($ipx>0&&$ipx<256))&&(($ipy>=0&&$ipy<256))&&\
  11. (($ipz>=0&&$ipz<256))&&(($ipw>=0&&$ipw<256))&&\
  12. echo "$1 is correct IP!"||echo "$1 is incorrect IP!"
  13. else
  14. echo "input error!"
  15. fi
復(fù)制代碼

作者: zhhui2000    時間: 2004-03-02 14:39
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
echo "please input IP:"
read ip
echo $ip |awk -F '.' '{ if ( ($1 >256 || $1 <0) || ($2 >256 || $2 < 0) || ($3 > 256 || $3 < 0) || ($
4 >256 || $4 < 0 )) print $0 ,"is incorrect"}'
作者: lwq315    時間: 2004-03-02 14:39
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
謝謝~~!我琢磨琢磨看~!
作者: 網(wǎng)中人    時間: 2004-03-02 14:44
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
有人測過 1.2.3 或 1.2.3.4.5 的 format 嗎?  ^_^

還有:
.1.2.3.4
1.2.3.4.
.1.2.3
1.2.3.
作者: 網(wǎng)中人    時間: 2004-03-02 16:21
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
為了能夠測試更多錯誤格式,及更方便使用,我將原本的 code 修改了一下:
  1. #!/bin/bash

  2. usage () {
  3.         echo "incorrect IP format."
  4.         readip
  5.         chkip
  6. }

  7. readip () {
  8.         read -p "Your IP: " IP
  9. }

  10. chkip () {
  11.         echo "$IP" | grep -Eq '[^0-9.]|^\.|\.$' && usage
  12.         [ $(echo -e "${IP//./\n}" | wc -l) -ne 4 ] && usage
  13.         for i in ${IP//./ } ; do
  14.                 [ $((i/8)) -lt 32 ] || usage
  15.         done
  16. }

  17. if [ "$1" ]; then
  18.         IP=$1
  19. else
  20.         readip
  21. fi
  22. chkip
  23. echo "$IP is good!"
復(fù)制代碼

作者: taocb006    時間: 2004-03-02 16:27
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
echo "please input IP:"
read ip
echo $ip |awk -F"." '{
if ( ($1>256 || $1<0) || ($2>256 || $2 < 0) || ($3 > 256 || $3 < 0) || ($ 4 >256
|| $4 < 0 ) || ($NF>4) ) print $0 ,"is incorrect"}'
作者: 網(wǎng)中人    時間: 2004-03-02 16:36
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
原帖由 "taocb006" 發(fā)表:
echo "please input IP:"
read ip
echo $ip |awk -F"." '{
if ( ($1>256 || $1<0) || ($2>256 || $2 < 0) || ($3 > 256 || $3 < 0) || ($ 4 >256
|| $4 < 0 ) || ($NF>4) ) print $..........


請問這跟 zhhui2000 貼的差在哪?
作者: taocb006    時間: 2004-03-02 16:42
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
增加了$NF等判斷,兄弟!。

對于.1.2.3.4.或1.2.3.4.5等,原來的是有問題的! 
作者: 網(wǎng)中人    時間: 2004-03-02 17:04
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
哦... 了解...

不過,對 1.2.3.4. 還是不能過濾...
作者: forest077    時間: 2004-03-02 18:02
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
網(wǎng)版主,taocb006的代碼我試過了,你說的那種情況可以過濾,其他的非法情況也都能過濾,很好。不過里面NF不要加$。
作者: bjgirl    時間: 2004-03-02 18:05
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
誰測試測試我的那段?,
作者: r2007    時間: 2004-03-02 18:25
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
[quote]原帖由 "forest077"]網(wǎng)版主,taocb006的代碼我試過了,你說的那種情況可以過濾,其他的非法情況也都能過濾,很好。不過里面NF不要加$。[/quote 發(fā)表:

這些非法情況如何?^_^
  1. 1.1--------2.+3.0256
  2. 0333.0257.0355.0307
  3. 0x99.1  2.+3.0256
  4. 1.1 1.2 3.3
  5. 0xab.1.1.1
復(fù)制代碼

作者: bjgirl    時間: 2004-03-02 18:36
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
原帖由 "r2007"][/quote 發(fā)表:
  1. #!/bin/ksh
  2. #
  3. if ! echo $1|grep -q "[a-zA-Z!@#$%^&*()-_+=|\`~<>,/?]";then
  4. n=1
  5. for i in x y z w;do
  6.         export ip$i=$(echo $1|cut -f$n -d".")
  7.         ((n+=1))
  8.         done
  9. (($ipx>0&&$ipx<256))&&(($ipy>=0&&$ipy<256))&&\
  10. (($ipz>=0&&$ipz<256))&&(($ipw>=0&&$ipw<256))&&\
  11. echo "$1 is correct IP!"||echo "$1 is incorrect IP!"
  12. else
  13.         echo "input error!"
  14. fi 2>/dev/null
復(fù)制代碼
我的腳本測試:
[quote]
$ksh ipp 1.1--------2.+3.0256
input error!
$ksh ipp 0333.0257.0355.0307
0333.0257.0355.0307 is incorrect IP!
$ksh ipp 0x99.1  2.+3.0256
input error!
$ksh ipp 1.1 1.2 3.3
1.1 is incorrect IP!
$ksh ipp 0xab.1.1.
input error!
  1. ksh ipp 202.106.127.117
  2. 202.106.127.117 is correct IP!
復(fù)制代碼

作者: forest077    時間: 2004-03-02 19:33
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
r2007版主說的確實都沒有測到,其中包含空格、以0x開頭的都不能過濾,汗……
bjgirl和網(wǎng)版主的代碼太高,我還沒有學(xué)到,在我的sco上直接運行也有問題,所以看不懂。我把taocb006的稍微改了改,是可以過濾掉上面提到的幾種情況的。

  1. #!/bin/sh
  2. echo "please input IP:"
  3. read ip
  4. echo $ip |awk -F"." '
  5. {
  6.         if (        ($1<=256 && $1>=0) &&
  7.                 ($2<=256 && $2>=0) &&
  8.                 ($3<=256 && $3>=0) &&
  9.                 ($4<=256 && $4>=0) &&
  10.                 (NF==4) &&
  11.                 ($1~/^[0-9]+$/)) &&
  12.                 ($2~/^[0-9]+$/)) &&
  13.                 ($3~/^[0-9]+$/)) &&
  14.                 ($4~/^[0-9]+$/))
  15.         {
  16.                 print $0,"correct"
  17.         }
  18.         else
  19.         {
  20.                 print $0,"error"
  21.         }
  22. }'
復(fù)制代碼

作者: r2007    時間: 2004-03-02 23:20
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
to: bjmm
ksh我沒有接觸過,不過我猜這個未必能測出來^_^
1.1.1.-0
or
1.1.1.-
or
1.0.1.1-
or
1.0.0.1-------
至少可以躲過echo "input error!"這一關(guān)
作者: bjgirl    時間: 2004-03-02 23:31
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
原帖由 "r2007" 發(fā)表:
to: bjmm
ksh我沒有接觸過,不過我猜這個未必能測出來^_^
1.1.1.-0
or
1.1.1.-
or
1.0.1.1-
or
1.0.0.1-------
至少可以躲過echo "input error!"這一關(guān)
我我我.....哇~~,不帶這么刁難我的! :em12:
作者: bjgirl    時間: 2004-03-02 23:40
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
其實把那個grep里的改改就可以用了.
作者: 網(wǎng)中人    時間: 2004-03-03 00:23
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
有那麼難嗎?
echo "$IP" | grep -Eq '[^0-9.]|^\.|\.$|^0*\.' && printerr

okay,再改一次,這應(yīng)該可用了吧:
  1. #!/bin/bash

  2. printerr () {
  3.         echo "incorrect IP format."
  4.         readip
  5.         chkip
  6. }

  7. readip () {
  8.         read -p "Your IP: " IP
  9. }

  10. chkip () {
  11.         echo "$IP" | grep -Eq '[^0-9.]|^\.|\.$|^0*\.' && printerr
  12.         [ $(echo -e "${IP//./\n}" | wc -l) -ne 4 ] && printerr
  13.         for i in ${IP//./ } ; do
  14.                 [ $((10#$i/8)) -lt 32 ] || printerr
  15.         done
  16. }

  17. if [ "$1" ]; then
  18.         IP=$1
  19. else
  20.         readip
  21. fi
  22. chkip
  23. echo "$IP is good!"
復(fù)制代碼

作者: bjgirl    時間: 2004-03-03 01:24
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
歡迎大家考驗!

  1. cat ipp
  2. #!/bin/ksh
  3. #
  4. #
  5. var=$(echo $1|tr -d .)
  6. if echo $var|sed -n '/^[0-9.*]/p' >/dev/null 2>&1;then
  7. n=1
  8.         for i in x y z w;do
  9.                 export ip$i=$(echo $1|cut -f$n -d".")
  10.                 ((n+=1))
  11.         done
  12.         (($ipx>0&&$ipx<256))&&(($ipy>=0&&$ipy<256))&&\
  13.         (($ipz>=0&&$ipz<256))&&(($ipw>0&&$ipw<256))&&\
  14.         echo "$1 is: correct IP!"||echo "$1 is: incorrect IP!"
  15. fi 2>/dev/null
復(fù)制代碼

測試文件:
cat iplist
1.1.1.-0
1.1.1.-
1.0.1.1-
1.0.0.1-------
1.1--------2.+3.0256
0333.0257.0355.0307
0x99.1  2.+3.0256
1.1 1.2 3.3
0xab.1.1.1
1.2.3.4
192.168.2.2
211.12.2.2
61.51.142.3

測試代碼:

  1. for i in $(<iplist);do
  2.         ksh ipp $i
  3. done
復(fù)制代碼

測試結(jié)果:
1.1.1.-0 is: incorrect IP!
1.1.1.- is: incorrect IP!
1.0.1.1- is: incorrect IP!
1.0.0.1------- is: incorrect IP!
1.1--------2.+3.0256 is: incorrect IP!
0333.0257.0355.0307 is: incorrect IP!
0x99.1 is: incorrect IP!
2.+3.0256 is: incorrect IP!
1.1 is: incorrect IP!
1.2 is: incorrect IP!
3.3 is: incorrect IP!
0xab.1.1.1 is: incorrect IP!
1.2.3.4 is: correct IP!
192.168.2.2 is: correct IP!
211.12.2.2 is: correct IP!
61.51.142.3 is: correct IP!

作者: bjgirl    時間: 2004-03-03 01:30
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
卡在這個IP很長時間!累死本MM了
1.1.1.-0
測試的時候總說他是IP,,不過在我的努力下他終于說實話了....
建議此主題加精華!
作者: 網(wǎng)中人    時間: 2004-03-03 01:31
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
MM 請加兩個 IP 來測測看...

1.2.3.
.1.2.3
作者: bjgirl    時間: 2004-03-03 01:34
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
$ksh ipp .1.2
.1.2 is: incorrect IP!
$ksh ipp 1.2.3
1.2.3 is: incorrect IP!
$ksh ipp .1.2.3
.1.2.3 is: incorrect IP!
$ksh ipp 1.2.3.
1.2.3. is: incorrect IP!
作者: 網(wǎng)中人    時間: 2004-03-03 01:39
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
還有... MM 為何認(rèn)為第 4 碼的 IP 不可以是 0 呢?
因為一個 mask_bit 少於 24 的 IP 都可以用 0 哦...

若,本串討論再加入 netmask 判斷,那就更為精彩了...  ^_^
作者: bjgirl    時間: 2004-03-03 01:46
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
原帖由 "網(wǎng)中人" 發(fā)表:
還有... MM 為何認(rèn)為第 4 碼的 IP 不可以是 0 呢?
因為一個 mask_bit 少於 24 的 IP 都可以用 0 哦...

若,本串討論再加入 netmask 判斷,那就更為精彩了...  ^_^
唉!,,,,還是有問題!,不弄了!sleep去!
作者: r2007    時間: 2004-03-03 09:43
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
網(wǎng)兄所供代碼檢測不到這些
1...1
1.02.3.4
1.2.003.4
1.0000000000000000000002.21.1

將code改一下,可以檢測到第一種情況了,第二種之后的這些情況首先不知道是不是符合ip的規(guī)范,再是如何識別它?
  1. echo "$IP" | grep -Eq '[^0-9.]|^\.|\.$|^0*\.|\.\.' && printerr
復(fù)制代碼

作者: 網(wǎng)中人    時間: 2004-03-03 13:03
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
感謝 r2007 兄幫忙測試及提供修正﹗
關(guān)於後面帶 0 開頭的 ip ,應(yīng)該是不規(guī)範(fàn)的,因為會被當(dāng)作八進位來處理。因此要過濾掉:
  1. echo $i | grep -Eq "^0+[^0]" && printerr
復(fù)制代碼


我再次修改代碼如下,歡迎測試:
  1. #!/bin/bash

  2. printerr () {
  3.         echo "incorrect IP format."
  4.         readip
  5.         chkip
  6. }

  7. readip () {
  8.         read -p "Your IP: " IP
  9. }

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

  18. if [ "$1" ]; then
  19.         IP=$1
  20. else
  21.         readip
  22. fi
  23. chkip
  24. echo "$IP is good!"
復(fù)制代碼

作者: labrun    時間: 2004-03-03 14:55
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
呵呵,你們夠?qū)I(yè)!佩服佩服
作者: bjgirl    時間: 2004-03-03 16:27
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
[quote]原帖由 "labrun"]呵呵,你們夠?qū)I(yè)!佩服佩服[/quote 發(fā)表:

受益匪淺
作者: bjgirl    時間: 2004-03-04 01:04
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
原帖由 "網(wǎng)中人" 發(fā)表:
還有... MM 為何認(rèn)為第 4 碼的 IP 不可以是 0 呢?
因為一個 mask_bit 少於 24 的 IP 都可以用 0 哦...

若,本串討論再加入 netmask 判斷,那就更為精彩了...  ^_^
懶啦~~,嘻嘻,還是看看netman的這個腳本吧!
http://www.chinaunix.net/jh/24/196402.html
作者: maluyao    時間: 2005-05-19 14:57
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
Linux 通過
ipcalc  -m 192.168.0.259  &>/dev/null  && echo 'This is an IP Address' ||echo 'This is not an IP Addr'
作者: rhinux    時間: 2005-06-04 00:20
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
IPv6呢?
作者: supersuper    時間: 2005-06-16 11:32
標(biāo)題: 如何檢測用戶輸入的一串?dāng)?shù)字是一個IP地址?
受益匪淺啊
作者: youyuanyin    時間: 2007-09-06 17:18
原帖由 r2007 于 2004-3-2 23:20 發(fā)表
to: bjmm
ksh我沒有接觸過,不過我猜這個未必能測出來^_^
1.1.1.-0
or
1.1.1.-
or
1.0.1.1-
or
1.0.0.1-------
至少可以躲過echo "input error!"這一關(guān)
#!/bin/ksh
#
if ! echo $1|grep -q "[a-zA-Z!@#$%^&*()-_+=|\`~<>,/?]";then

n=1
for i in x y z w;do
        export ip$i=$(echo $1|cut -f$n -d".")
        ((n+=1))
        done
(($ipx>0&&$ipx<256))&&(($ipy>=0&&$ipy<256))&&\
(($ipz>=0&&$ipz<256))&&(($ipw>=0&&$ipw<256))&&\
echo "$1 is correct IP!"||echo "$1 is incorrect IP!"
else
        echo "input error!"
fi 2>/dev/null

測試結(jié)果如下:
[root@you140 tftpd]# ./test_ip.sh 1.1.1.-0
input error!
[root@you140 tftpd]# ./test_ip.sh 1.1.1.-
input error!
[root@you140 tftpd]# ./test_ip.sh 1.0.1.1-
input error!
[root@you140 tftpd]# ./test_ip.sh 1.0.0.1-------
input error!
[root@you140 tftpd]#

這不是通過了嗎?




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2