如何从 bash 获取网络掩码?

如何从 bash 获取网络掩码?

我想在 Linux 上获取我的网络掩码。它输出为ifconfig但我想提取字符串。

答案1

我应该澄清一下,这里的代码适用于 Linux(请注意有关其他 Unices 的评论和帖子)。 OP 要求一个 Linux 解决方案,但最好将问题改为“如何获取网络掩码”,并让答案结合更多 Unix 风格的最佳方法。

#!/bin/sh
ifconfig "$1" | sed -rn '2s/ .*:(.*)$/\1/p'

./脚本eth0

关于 Linux 中的 ifconfig

与其他传统网络命令(如 netstat、arp、rarp 和 Route)一起,ifconfig 是网络工具包裹。 Net-tools 已经很长时间没有得到积极开发了,并且有人努力弃用它以支持更新的工具ip路由2包裹。为了简洁起见,如果您想了解有关这一基本转变的更多详细信息,请参阅以下一些相关链接:

案例示例:Debian Linux

案例示例:Arch Linux

net-tools ifconfig 的手册页(参见 BUGS 部分)

从用户角度对框架进行分析比较

答案2

/sbin/ifconfig eth0 | awk '/Mask:/{ print $4;} '

答案3

我想知道你是否真的只想要面具。也许你真的想要带有掩码的网络(或IP),在配置文件中使用,nmap或其他。

在这种情况下,在 Linux 上,您还可以解析命令的输出ip ...

要列出所有接口及其以 CIDR 表示法表示的地址和掩码:

ip -o -f inet addr show | awk '/scope global/ {print $2, $4}'

或者将其限制为默认接口:

default_if=$(ip route list | awk '/^default/ {print $5}')
ip -o -f inet addr show $default_if | awk '{print $4}'

这在我的机器上给了我“192.168.1.61/24”。

答案4

/sbin/ifconfig eth0 | grep Mask | cut -d":" -f4

相关内容