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 파일이 읽혀집니다. 루프백 외에 인터페이스가 하나만 있는 경우 $()출력을 변수에 넣기 위해 스크립트에서 사용할 수 있는 단일 값으로 해당 mtu를 반환합니다.

댓글에 답장:

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

필요한 경우 위와 동일한 패턴 일치를 lo제외할 수 있습니다(여러 인터페이스 출력을 보여주기 위해 여기에 남겨 두었습니다).

답변2

구성 값을 직접 읽으십시오.

MTU_VAL=$(< /sys/class/net/<replace-with-interface-name>/mtu)

<replace-with-interface-name>원하는 MTU 인터페이스 이름으로 바꾸십시오 .

관련 정보