執行效果:python
python代碼:shell
[root@yang python]# vi check_ip.py #!/usr/bin/python import os,sys def check_ip(ipaddr): import sys addr=ipaddr.strip().split('.') #切割IP地址爲一個列表 #print addr if len(addr) != 4: #切割後列表必須有4個參數 print "check ip address failed!" sys.exit() for i in range(4): try: addr[i]=int(addr[i]) #每一個參數必須爲數字,不然校驗失敗 except: print "check ip address failed!" sys.exit() if addr[i]<=255 and addr[i]>=0: #每一個參數值必須在0-255之間 pass else: print "check ip address failed!" sys.exit() i+=1 else: print "check ip address success!" if len(sys.argv)!=2: #傳參加自己長度必須爲2 print "Example: %s 10.0.0.1 "%sys.argv[0] sys.exit() else: check_ip(sys.argv[1]) #知足條件調用校驗IP函數
執行校果:bash
返回值0校驗合法,非0不合法。ide
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