如何将 cidr ip 范围填充为 bash 脚本



文件中列出 CIDR 范围。其中一些不是"格式良好"的,以防它们有效,但有些程序不会接受它们。

示例:192.168/24

解析为:192.168.0.0/24

因此,在这种情况下,应该检查是否有 4 个八位字节。如果没有,脚本应为每个缺少的脚本应用 .0。

1.1.1/24

变为 1.1.1.0/24

2.2/16

变为 2.2.0.0/16...

谢谢 :-(

窍是

  1. 将(部分(地址拆分为一个数组
  2. 将 4 个零附加到数组的末尾
  3. 获取结果数组的前 4 个元素,然后重新连接.

例如:

cidr=192.168/24
IFS=. read -a octets <<< "${cidr%/*}"
octets+=(0 0 0 0)
printf -v network "%d.%d.%d.%d" "${octets[@]:0:4}"
printf '%s/%dn' "$network" "${cidr#*/}"

否则

最新更新