Si vous êtes sur RHEL7 (ou similaire) et utilisez Network Manager au lieu de /etc/init.d/network pour contrôler vos interfaces, la réponse proposée ne fonctionnera pas, car / sbin / ifup-local (ainsi que ifdown-pre-local et ifdown-local ) ne seront jamais exécutés.
Au lieu de cela, placez vos scripts dans /etc/NetworkManager/dispatcher.d/ et assurez-vous que le service NetworkManager-dispatcher est activé
systemctl enable NetworkManager-dispatcher
Astuce: Le répartiteur ne démarrera qu'une fois que NetworkManager apportera des modifications à une interface, il n'a pas besoin d'être en cours d'exécution ou quoi que ce soit, donc si l'état indique
Active: inactive (dead)
c'est tout à fait bien!
Assurez-vous également que votre script est:
- exécutable (chmod + x)
- appartenant à root (chown root: root)
- accessible en écriture uniquement par root (chmod 755)
Maintenant, NetworkManager passera deux (2) variables au répartiteur:
$ 1 étant l'interface ( eno16777984 , eth0 , ppp0 , etc ...)
2 $ détenant le statut ( vers le haut ou vers le bas )
et cela permet d'enchaîner les scripts (tout comme / etc / rc ...) pour avoir un certain contrôle sur l'ordre dans lequel le répartiteur les exécutera:
10 premières, 20 secondes et ainsi de suite ...
La commande sera ascendante sur une connexion
si [$ 2 = "up"] ses 10 premiers suivis de 20 secondes
et descendant sur une déconnexion
si [$ 2 = "down"] vous obtenez 20 secondes suivies de 10 premières
etc.
Donc, pour accomplir ce que OP recherchait, vous pourriez mettre quelque chose comme ceci:
#!/bin/bash
if [ "$1" = "eth0" && "$2" = "up" ]; then
/sbin/ethtool --offload eth0 tso off
fi
dans /etc/NetworkManager/dispatcher.d/20-ethtool
Et appelez ça un jour.
À votre santé