Wenn Sie auf RHEL7 (oder ähnlich) arbeiten und Network Manager anstelle von /etc/init.d/network verwenden , um Ihre Schnittstellen zu steuern, funktioniert die vorgeschlagene Antwort nicht, da / sbin / ifup-local (sowie ifdown-pre-local) und ifdown-local ) werden niemals ausgeführt.
Stellen Sie stattdessen Ihre Skripte in /etc/NetworkManager/dispatcher.d/ und stellen Sie sicher, dass der NetworkManager-Dispatcher- Dienst aktiviert ist
systemctl enable NetworkManager-dispatcher
Hinweis: Der Dispatcher wird nur dann aktiviert, wenn NetworkManager Änderungen an einer Schnittstelle vornimmt, nicht ausgeführt werden muss oder so, wenn der Status lautet
Active: inactive (dead)
Das ist völlig in Ordnung!
Stellen Sie außerdem sicher, dass Ihr Skript:
- ausführbare Datei (chmod + x)
- im Besitz von root (chown root: root)
- nur von root beschreibbar (chmod 755)
Jetzt übergibt NetworkManager zwei (2) Variablen an den Dispatcher:
$ 1 ist die Schnittstelle ( eno16777984 , eth0 , ppp0 , etc ...)
$ 2 hält den Status (entweder nach oben oder nach unten )
und es ermöglicht das Verketten der Skripte (genau wie / etc / rc ...), um die Reihenfolge zu steuern, in der der Dispatcher sie ausführt:
10-first, 20-second und so weiter ...
Die Reihenfolge wird bei einer Verbindung aufsteigend sein
if [$ 2 = "up"] sein 10-first gefolgt von 20-second
und absteigend auf eine Trennung
Wenn [$ 2 = "down"], erhalten Sie 20 Sekunden, gefolgt von 10 zuerst
und so weiter.
Um das zu erreichen, wonach OP gesucht hat, können Sie Folgendes eingeben:
#!/bin/bash
if [ "$1" = "eth0" && "$2" = "up" ]; then
/sbin/ethtool --offload eth0 tso off
fi
in /etc/NetworkManager/dispatcher.d/20-ethtool
Und nenn es einen Tag.
Prost