确认某个 IP 是否在 CIDR 列表中

gue*_*est 5 scripting ip sed awk

给定一个 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
Run Code Online (Sandbox Code Playgroud)

最好使用 bultin Mac/BSD 工具完成。

Kus*_*nda 6

grepcidr与 中的网络块列表一起使用list

$ echo '100.31.255.4' | grepcidr -f list
100.31.255.4

$ echo '10.31.255.4' | grepcidr -f list
(no output)
Run Code Online (Sandbox Code Playgroud)

作为测试:

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
Run Code Online (Sandbox Code Playgroud)