我想在 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包裹。为了简洁起见,如果您想了解有关这一基本转变的更多详细信息,请参阅以下一些相关链接:
答案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