Se você estiver no RHEL7 (ou similar) e usar o Network Manager em vez do /etc/init.d/network para controlar suas interfaces, a resposta proposta não funcionará, já que / sbin / ifup-local (assim como ifdown-pré-local) e ifdown-local ) nunca serão executados.
Em vez disso, coloque seus scripts em /etc/NetworkManager/dispatcher.d/ e verifique se o serviço NetworkManager-dispatcher está ativado
systemctl enable NetworkManager-dispatcher
Dica: o despachante só entra em ação quando o NetworkManager faz alterações em uma interface, não precisa estar em execução nem nada, portanto, se o status indicar
Active: inactive (dead)
tudo bem!
Verifique também se o seu script é:
- executável (chmod + x)
- de propriedade da raiz (raiz da raiz: raiz)
- gravável apenas pela raiz (chmod 755)
Agora o NetworkManager passará duas (2) variáveis para o expedidor:
$ 1 sendo a interface ( eno16777984 , eth0 , ppp0 , etc ...)
$ 2 mantendo o status (para cima ou para baixo )
e permite encadear os scripts (assim como / etc / rc ...) para ter algum controle sobre a ordem na qual o expedidor os executará:
10 primeiro, 20 segundos e assim por diante ...
O pedido será crescente em uma conexão
se [$ 2 = "up"] for 10 primeiros, seguido por 20 segundos
e descendo em uma desconexão
se [$ 2 = "down"] você obtiver 20 segundos, seguido por 10 primeiros
e assim por diante.
Portanto, para realizar o que o OP estava procurando, você poderia colocar algo assim:
#!/bin/bash
if [ "$1" = "eth0" && "$2" = "up" ]; then
/sbin/ethtool --offload eth0 tso off
fi
em /etc/NetworkManager/dispatcher.d/20-ethtool
E termine um dia.
Felicidades