用于编辑命令输出的 Shell 脚本 (Bash)
我正在尝试编写一个 shell 脚本来确定我自己的个人无线网络上的 IP 地址范围。当我运行这个命令时:
ifconfig
我得到这个关键信息:
inet 192.168.1.228
broadcast 192.168.1.255
netmask 255.255.255.0
所以现在我知道范围是192.168.1.0-255(或192.168.1.0/24)。我尝试运行我制作的这个脚本:
#!/bin/bash
ifconfig | awk '/broadcast/ {print $6}'
这将输出我的最大 ip 范围:
192.168.1.255
我怎样才能让这个脚本像这样找到我的最大范围,但它是这样写的:
192.168.1.0-255
或者
192.168.1.0/24
任何帮助深表感谢!
答案1
最简单的解决方案是使用ip address
无论如何ifconfig
你都应该做的事情。
您可以从ifconfig
输出中获取网络掩码并计算 1 位的数量:
echo 255.255.255.0 |
awk -F. '{print "obase=2;" $1 "*2^24+" $2 "*2^16+" $3 "*2^8+" $4}' |
bc |
awk '{ sub("10*$","1", $0); print length($0); }'