MTU値を取得する最良の方法は何ですか

MTU値を取得する最良の方法は何ですか

私は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を決定できるかどうか教えてください。

ベストアンサー1

/sys/class/net/<interface>/*ほとんどのツールは/procまたは/sysの情報を利用します。 ifconfigの場合は、次のファイルを使用してください。

loopback( ) をlo除くすべてのインターフェイスの mtu を取得するには、次のようにします。

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

除外はシェルグロービングによって行われ、lとoで始まらないすべての項目が拡張され、その中のmtuファイルが読み込まれます。ループバックに加えてインターフェイスが1つしかない場合は、$()出力を変数に入れるためにスクリプトで使用できる単一の値として対応するmtuを返します。

コメントに返信:

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

必要に応じて、上記と同じパターンマッチングをlo除外できます(複数のインターフェイス出力を示すためにここに残しました)。

おすすめ記事