天天看點

python與shell校驗IP位址合法性python校驗IP位址合法性 shell校驗IP位址合法性

執行效果:

<a href="http://s3.51cto.com/wyfs02/M02/12/C3/wKiom1MN5XDDyM3rAAEwJDCIJR0946.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/12/C3/wKiom1MN5VOSj7YXAAFHdMgu6iw758.jpg" target="_blank"></a>

python代碼:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

<code>[root@yang python]</code><code># vi check_ip.py</code>

<code>#!/usr/bin/python</code>

<code>import</code> <code>os,sys</code>

<code>def</code> <code>check_ip(ipaddr):</code>

<code>        </code><code>import</code> <code>sys</code>

<code>        </code><code>addr</code><code>=</code><code>ipaddr.strip().split(</code><code>'.'</code><code>)   </code><code>#切割IP位址為一個清單</code>

<code>        </code><code>#print addr</code>

<code>        </code><code>if</code> <code>len</code><code>(addr) !</code><code>=</code> <code>4</code><code>:   </code><code>#切割後清單必須有4個參數</code>

<code>                </code><code>print</code> <code>"check ip address failed!"</code>

<code>                </code><code>sys.exit()</code>

<code>        </code><code>for</code> <code>i </code><code>in</code> <code>range</code><code>(</code><code>4</code><code>):</code>

<code>                </code><code>try</code><code>:</code>

<code>                        </code><code>addr[i]</code><code>=</code><code>int</code><code>(addr[i])   </code><code>#每個參數必須為數字,否則校驗失敗</code>

<code>                </code><code>except</code><code>:</code>

<code>                        </code><code>print</code> <code>"check ip address failed!"</code>

<code>                        </code><code>sys.exit()</code>

<code>                </code><code>if</code> <code>addr[i]&lt;</code><code>=</code><code>255</code> <code>and</code> <code>addr[i]&gt;</code><code>=</code><code>0</code><code>:    </code><code>#每個參數值必須在0-255之間</code>

<code>                        </code><code>pass</code>

<code>                </code><code>else</code><code>:</code>

<code>                </code><code>i</code><code>+</code><code>=</code><code>1</code>

<code>        </code><code>else</code><code>:</code>

<code>                </code><code>print</code> <code>"check ip address success!"</code>

<code>if</code>  <code>len</code><code>(sys.argv)!</code><code>=</code><code>2</code><code>:  </code><code>#傳參加本身長度必須為2</code>

<code>        </code><code>print</code> <code>"Example: %s 10.0.0.1 "</code><code>%</code><code>sys.argv[</code><code>0</code><code>]</code>

<code>        </code><code>sys.exit()</code>

<code>else</code><code>:</code>

<code>        </code><code>check_ip(sys.argv[</code><code>1</code><code>])   </code><code>#滿足條件調用校驗IP函數</code>

執行校果:

  傳回值0校驗合法,非0不合法。

<a href="http://s3.51cto.com/wyfs02/M00/12/C3/wKioL1MN5UqAINbnAAD4BrmI99w080.jpg" target="_blank"></a>

shell代碼:

30

<code>[root@yang python]</code><code># vi check_ip.sh</code>

<code>#!/usr/bin/sh</code>

<code>CheckIPAddr()</code>

<code>{</code>

<code>echo</code> <code>$1|</code><code>grep</code> <code>"^[0-9]\{1,3\}\.\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}$"</code> <code>&gt; </code><code>/dev/null</code><code>;</code>

<code>#IP位址必須為全數字</code>

<code>        </code><code>if</code> <code>[ $? -</code><code>ne</code> <code>0 ]</code>

<code>        </code><code>then</code>

<code>                </code><code>return</code> <code>1</code>

<code>        </code><code>fi</code>

<code>        </code><code>ipaddr=$1</code>

<code>        </code><code>a=`</code><code>echo</code> <code>$ipaddr|</code><code>awk</code> <code>-F . </code><code>'{print $1}'</code><code>`   </code><code>#以"."分隔,取出每個列的值</code>

<code>        </code><code>b=`</code><code>echo</code> <code>$ipaddr|</code><code>awk</code> <code>-F . </code><code>'{print $2}'</code><code>`</code>

<code>        </code><code>c=`</code><code>echo</code> <code>$ipaddr|</code><code>awk</code> <code>-F . </code><code>'{print $3}'</code><code>`</code>

<code>        </code><code>d=`</code><code>echo</code> <code>$ipaddr|</code><code>awk</code> <code>-F . </code><code>'{print $4}'</code><code>`</code>

<code>        </code><code>for</code> <code>num </code><code>in</code> <code>$a $b $c $d</code>

<code>        </code><code>do</code>

<code>                </code><code>if</code> <code>[ $num -gt 255 ] || [ $num -lt 0 ]     </code><code>#每個數值必須在0-255之間</code>

<code>                </code><code>then</code>

<code>                        </code><code>return</code> <code>1</code>

<code>                </code><code>fi</code>

<code>        </code><code>done</code>

<code>                </code><code>return</code> <code>0</code>

<code>}</code>

<code>if</code> <code>[ $</code><code># -ne 1 ];then            #判斷傳參數量</code>

<code>        </code><code>echo</code> <code>"Usage: $0 ipaddress."</code>

<code>        </code><code>exit</code>

<code>else</code>

<code>CheckIPAddr $1</code>

<code>fi</code>

<code></code>

     本文轉自楊雲1028 51CTO部落格,原文連結http://blog.51cto.com/yangrong/1363957:,如需轉載請自行聯系原作者