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

时间:2017-11-11 21:08:02

标签: bash ip cidr

在文件中包含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 个答案:

答案 0 :(得分:0)

诀窍是

  1. 将(部分)地址拆分为数组
  2. 将4个零附加到数组的末尾
  3. 获取结果数组的前4个元素,然后使用.
  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/%d\n' "$network" "${cidr#*/}"
    

    否则,