用于编辑命令输出的 Shell 脚本 (Bash)

用于编辑命令输出的 Shell 脚本 (Bash)

用于编辑命令输出的 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); }'

相关内容