使用ipcalc计算广播IP地址

Calculate broadcast ip address using ipcalc

我在文本文件中有一个 cidr 格式的 ip 地址列表,每行一个 cidr,我想计算 cidr 的广播 ip 地址。我知道我可以使用带有 -b 选项的 ipcalc 来做到这一点,但 ipcalc 不会使用充满 cidr 的文本文件。那么,如何编写 bash 脚本来环绕 ipcal 命令。

这是一个应该可以解决问题的快速脚本:

示例文件ips.txt

$ cat ips.txt 
192.168.0.1/24
192.167.0.1/24

此文件中 ips 的示例输出:

$ for i in $(cat ips.txt);do echo $i; ipcalc -b $i;done 
192.168.0.1/24
BROADCAST=192.168.0.255
192.167.0.1/24
BROADCAST=192.167.0.255

如果不需要自己输出ip地址,去掉echo即可。

编辑

根据要求,这是一个只打印广播地址的版本:

$ for i in $(cat ips.txt);do bcaddr=$(ipcalc -b $i);echo ${bcaddr#BROADCAST=};done
192.168.0.255
192.167.0.255