Linux

獲取 MTU 值的最佳方法是什麼

  • April 24, 2018

我正在使用以下方法查找 mtu 值

ifconfig | grep mtu
eno17832: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

但是在我的 bash 腳本中,我們想確切地知道 MTU 值

所以我們可以使用這個

MTU_VAL=` ifconfig | grep mtu | head -1 | awk '{print $NF}' `

但這可能有風險而且沒有那麼優雅

請讓我知道我們是否可以確定擷取 MTU?

大多數工具利用 /proc 或 /sys 中存在的資訊,關於 ifconfig 我將使用/sys/class/net/<interface>/*文件:

要為除環回()之外的所有介面獲取 mtu,lo這將起作用:

cat /sys/class/net/[^l][^o]*/mtu

排除是通過 shell globing 完成的,任何不以 l 開頭然後 o 的內容都會被擴展,然後讀取其中的 mtu 文件。如果除了環回之外只有一個介面,它將返回其 mtu 作為單個值,可在腳本中$()用於將輸出放入變數中。

要回答評論:

$ awk '{split(FILENAME,arr,"/"); print arr[5],$1}' /sys/class/net/*/mtu
ens160 1500
lo 65536

與上面相同的模式匹配以在需要時排除lo(我將其保留在這里以展示多個介面輸出)。

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