Si está en RHEL7 (o similar) y usa Network Manager en lugar de /etc/init.d/network para controlar sus interfaces, la respuesta propuesta no funcionará, ya que / sbin / ifup-local (así como ifdown-pre-local y ifdown-local ) nunca se ejecutarán.
En su lugar, coloque sus scripts en /etc/NetworkManager/dispatcher.d/ y asegúrese de que el servicio NetworkManager-dispatcher esté habilitado
systemctl enable NetworkManager-dispatcher
Sugerencia: el despachador solo se activará una vez que NetworkManager realice cambios en una interfaz, no es necesario que se esté ejecutando ni nada, por lo que si el estado se lee
Active: inactive (dead)
eso está completamente bien!
También asegúrese de que su script sea:
- ejecutable (chmod + x)
- propiedad de root (chown root: root)
- de escritura solo por root (chmod 755)
Ahora NetworkManager pasará dos (2) variables al despachador:
$ 1 es la interfaz ( eno16777984 , eth0 , ppp0 , etc.)
$ 2 manteniendo el estado ( arriba o abajo )
y permite encadenar los scripts (al igual que / etc / rc ...) para tener cierto control sobre el orden en que el despachador los ejecutará:
10 primeros, 20 segundos y así sucesivamente ...
El orden será ascendente en una conexión
if [$ 2 = "up"] es 10-first seguido de 20-second
y descendiendo en una desconexión
si [$ 2 = "down"] obtiene 20 segundos seguido de 10 primeros
y así.
Entonces, para lograr lo que OP estaba buscando, podría poner algo como esto:
#!/bin/bash
if [ "$1" = "eth0" && "$2" = "up" ]; then
/sbin/ethtool --offload eth0 tso off
fi
en /etc/NetworkManager/dispatcher.d/20-ethtool
Y llámalo un día.
Salud