编写一个判断IP地址合法性的bash脚本

来源:互联网 发布:linux 竖线 编辑:程序博客网 时间:2024/05/16 01:44

做unix/linux下的开发,脚本编写的功力是少不了的,作为shell编程,也是博大精深的一个技术领域,这里为了学习,就写一个简单的判断IP地址是否合法的微型脚本程序,这个小程序也是非常有用的。

IP地址是32位的,可以由4个十进制数值表示,每个数值的范围都是0~255.

#!/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(){    local  ip=$1    local  stat=1    if [[ $ip =~ ^[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}$ ]]; then        OIFS=$IFS        IFS='.'        ip=($ip)        IFS=$OIFS        [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 /            && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]        stat=$?    fi    return $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    do        if valid_ip $ip; then stat='good'; else stat='bad'; fi        printf "%-20s: %s/n" "$ip" "$stat"    donefi
如果你存储成valid_ip.sh直接运行就可以得到如下结果
# sh valid_ip.sh  4.2.2.2             : good  a.b.c.d             : bad  192.168.1.1         : good  0.0.0.0             : good  255.255.255.255     : good  255.255.255.256     : bad  192.168.0.1         : good  192.168.0           : bad  1234.123.123.123    : bad