给定一个 IPv4 地址,是否可以验证该 IP 是否在 CIDR 列表的范围内?
例如,如果我有以下 CIDR,有什么方法可以检查是否100.31.255.4
在任何 CIDR 范围内?
100.16.0.0/12
100.46.0.0/12
100.100.0.0/24
100.100.5.0/22
最好使用内置的 Mac/BSD 工具来完成。
答案1
使用grepcidr
网络块列表如下list
:
$ echo '100.31.255.4' | grepcidr -f list
100.31.255.4
$ echo '10.31.255.4' | grepcidr -f list
(no output)
作为测试:
if printf '%s\n' "$ipaddr" | grepcidr -f list >/dev/null; then
printf '%s is in the list\n' "$ipaddr"
else
printf '%s is not in the list\n' "$ipaddr"
fi