微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式-(bash)检查IP是否在子网范围文件中

我在文件中列出了子网范围:

2.32.0.0-2.47.255.255-255.240.0.0
2.112.0.0-2.119.255.255-255.248.0.0
2.156.0.0-2.159.255.255-255.252.0.0
2.192.0.0-2.199.255.255-255.248.0.0
...

(文件格式为:{startip}-{endip}-{netmask})

我需要检查文件的子网之一中是否包含IP.

解决方法:

尝试这个:

BEGIN {
    FS="."
    ex = "false"
    split(address, ip, ".")
}
{
    split($0, range, "[-.]")
    for (i=1; i<5; i++) {
        if (ip[i] < range[i] || ip[i] > range[i+4])
            break;
        else if ((ip[i] > range[i] && ip[i] < range[i+4]) || i == 4)
            ex = "true"
    }
}
END {
    print ex
}

像这样调用这个awk脚本(checkIP.awk):

$awk -v address="2.156.0.5" -f checkIP.awk /path/to/ip/ranges/file
true
$awk -v address="0.0.0.0" -f checkIP.awk /path/to/ip/ranges/file
false

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐