我在文件中列出了子网范围:
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] 举报,一经查实,本站将立刻删除。