qual é a melhor abordagem para capturar o valor da MTU

0

Estou usando o follwing para encontrar o valor do mtu

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

mas no meu script bash, queremos saber exatamente o valor da MTU

para que possamos usar isso

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

mas isso pode ser arriscado e não tão elegante

por favor, deixe-me saber se podemos capturar o MTU com certeza?

    
por yael 24.04.2018 / 14:21

2 respostas

2

A maioria das ferramentas aproveita as informações presentes em / proc ou / sys, em relação ao ifconfig que eu usaria com /sys/class/net/<interface>/* files:

Para obter o mtu para todas as interfaces, mas o loopback ( lo ), isso funcionaria:

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

A exclusão é feita pelo shell globing, qualquer coisa que não comece com l então o é expandida e, em seguida, o arquivo mtu dentro dele é lido. Se houver apenas uma interface diferente de loopback, ela retornará seu mtu como um valor único, utilizável no script com $() para colocar a saída em uma variável.

Para responder ao comentário:

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

O mesmo padrão de correspondência acima para excluir lo , se necessário (mantive-o aqui para mostrar a saída de várias interfaces).

    
por 24.04.2018 / 14:35
1

Leia diretamente seu valor de configuração.

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

Apenas substitua <replace-with-interface-name> pelo nome da interface que você deseja que tenha o seu MTU.

    
por 24.04.2018 / 14:35