查找“一致的网络设备命名”是否可用

查找“一致的网络设备命名”是否可用

我有一个自定义软件,需要知道多个系统(更准确地说是其中两个)上某个网络接口的名称,在该软件上我无法更改任何内容,例如禁用“一致的网络设备命名”。有些系统使用网络管理器的这一新功能,有些系统则不知道如何查明“一致的网络设备命名”是否可用并在设备上激活。

我可以使用 100% 工作的系统版本,但它是一个很黑客的解决方案,我需要一些更优雅的东西,比如某种 linux 命令,它会告诉我该功能是否已启动并正在运行。

系统是 ubuntu 16.04(具有旧命名方案的系统)和 CentOS 7(具有一致网络设备命名的系统)

答案1

测试设备是否存在

最简单的方法是测试网络设备是否存在及其名称。所以,执行

ip l

然后,如果网络设备eth0等存在,eth1wlan0您将拥有旧的命名方案。如果您有更长的名称,enp[0-9]s[0-9]那么您就可以使用新的、一致的方案。

要编写此脚本,您可以测试(此处测试以太网):

# test for new, consistent naming scheme
if ( "`ip l | egrep 'enp[0-9][1-9]?s[0-9][1-9]?:' | wc -l`" != "0" ) then

(继续使用你的 shellif语法,我不知道你有什么)。

或者(测试旧的以太网和 Wi-Fi):

# test for old naming scheme
if ( "`ip l | egrep '(eth|wlan)[0-9][1-9]?:' | wc -l`" != "0" ) then

用于测试旧方案。

事实上,由于它是systemd一个人可能会想测试它的存在,但默认systemd行为可以通过配置来更改。

相关内容