Network-Interface

克服 ifconfig Ubuntu16.04 和 Ubuntu17.01 格式的差異

  • November 29, 2017

背景:

我正在使用 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 人 1500

lo:標誌=73 mtu 65536

這可能會破壞一些確實考慮或期望輸出中額外的“:”的工具。

問題:

有沒有辦法以可靠的方式獲取網路介面列表,這樣 ifconfig 輸出格式的任何變化都不會影響使用它的工具?是否有可以以一致方式使用的 ifconfig 替代方案?

net-tools包被棄用了一段時間,取而代之的是 iproute2 (該ip包中的主要工具)。許多發行版甚至不再將網路工具作為其基本安裝的一部分。

net-tools 的開發已經重新啟動,但這導致許多工具在兼容性方面得到了增強,正如您在ifconfig. 在NEWS.Debian.gzDebian 9.0 系統上:

在 15 年沒有上游開發的情況下,net-tools 正在重新開發,解決了許多長期存在的問題。壞消息是許多命令的輸出發生了變化,並且肯定會破壞依賴解析它的腳本。

出於這個原因,調整您的腳本以使用 iproute2 工具可能是一個想法。例如,ip link應該給你類似的資訊到你的ifconfig上面。這種方法的一個缺點是它破壞了與非 Linux 系統的兼容性,幾乎所有非 Linux 系統都使用ifconfig.

引用自:https://unix.stackexchange.com/questions/407637