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 인터페이스 이름으로 바꾸십시오 .