背景:
我正在使用 ifconfig 命令检查 Linux 上的可用接口列表。
但是 ubuntu 16.04 和 ubuntu 17.10 中 ifconfig 的输出格式有所不同。
进一步检查,net-tools 软件包已在 ubuntu17.10 中升级(从 net-tools 1.60 到 net-tools 2.10-alpha),最新的 ifconfig 输出带有冒号(':')的网络接口名称。在旧版本上:
$ ifconfig --version net-tools 1.60 ifconfig 1.42 (2001-04-13)
$ ifconfig
enp0s3 链路封装:以太网
在较新的版本上
$ ifconfig --version 网络工具 2.10-alpha
$ifconfig
ens160:标志=4163 mtu 1500
lo:标志=73 mtu 65536
这可能会破坏一些确实考虑或期望输出中额外的“:”的工具。
问题:
有没有办法以可靠的方式获取网络接口列表,这样 ifconfig 输出格式的任何变化都不会影响使用它的工具?是否有可以以一致方式使用的 ifconfig 替代方案?
net-tools包被弃用了一段时间,取而代之的是 iproute2 (该
ip
包中的主要工具)。许多发行版甚至不再将网络工具作为其基本安装的一部分。net-tools 的开发已经重新启动,但这导致许多工具在兼容性方面得到了增强,正如您在
ifconfig
. 在NEWS.Debian.gz
Debian 9.0 系统上:出于这个原因,调整您的脚本以使用 iproute2 工具可能是一个想法。例如,
ip link
应该给你类似的信息到你的ifconfig
上面。这种方法的一个缺点是它破坏了与非 Linux 系统的兼容性,几乎所有非 Linux 系统都使用ifconfig
.从 shell 列出 Linux 中所有接口的另一种方法是读取
/proc/net/dev
,它的格式比 ifconfig(8) from 的输出更稳定net-tools
。例如,要获取接口名称: