克服 ifconfig Ubuntu16.04 和 Ubuntu17.01 格式的差異
背景:
我正在使用 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.gz
Debian 9.0 系統上:在 15 年沒有上游開發的情況下,net-tools 正在重新開發,解決了許多長期存在的問題。壞消息是許多命令的輸出發生了變化,並且肯定會破壞依賴解析它的腳本。
出於這個原因,調整您的腳本以使用 iproute2 工具可能是一個想法。例如,
ip link
應該給你類似的資訊到你的ifconfig
上面。這種方法的一個缺點是它破壞了與非 Linux 系統的兼容性,幾乎所有非 Linux 系統都使用ifconfig
.