私は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
除外できます(複数のインターフェイス出力を示すためにここに残しました)。