Wie kann man 70-persistent-net.rules ohne Neustart neu generieren?

14

Die Datei /etc/udev/rules.d/70-persistent-net.ruleswird auf einem Linux-System mit udev beim Neustart automatisch generiert, sofern sie nicht vorhanden ist. Ich würde aber gerne wissen, wie man diese Regeldatei (mit einem Befehl) erstellt, ohne den Server neu zu starten.

Ich habe eine Weile gegoogelt und festgestellt, dass die Regeldatei von diesem Skript generiert wird:

/lib/udev/write_net_rules

Es ist jedoch unmöglich, dieses Skript über die Befehlszeile auszuführen, da es (ich nehme an) von udev gestartet werden soll, wobei einige Umgebungsvariablen ordnungsgemäß festgelegt sind. Beim manuellen Starten wird die Fehlermeldung "fehlende $ INTERFACE" ausgegeben. Auch wenn ich vor dem Start des Skripts die env-Variable INTERFACE = eth0 gesetzt habe, wird der Fehler "Fehlende gültige Übereinstimmung" ausgegeben. Ganz zu schweigen davon, dass ich zwei Schnittstellen ( eth0und eth1) habe und die Regeldatei für beide generiert werden soll.

Ich habe auch darüber nachgedacht, solche udev-Ereignisse auszulösen, in der Hoffnung, dass das Skript von udev selbst gestartet wird, aber nichts ändert sich:

udevadm trigger --type=devices --action=change

Weiß jemand, wie man die beständigen Netzregeln in der Datei /etc/udev/rules.d/70-persistent-net.rulesohne Neustart neu generiert?

Tomas M
quelle
Was ist Ihre Distribution? Welche Art von Init-System verwendet es?
Michas
1
Ich würde sagen, das ist irrelevant. Ich benutze Slackware mit eUdev und Sysvinit. Ich habe die Startskripte untersucht, um herauszufinden, was ausgeführt wird, wodurch die Regeldatei generiert wird, aber ich habe nur den udevadm-Trigger gefunden, mit dem Kommentar, dass dies der Befehl zum Generieren der persistenten Regeln ist, aber irgendwie funktioniert dies nur beim Neustart, nein Wirkung, wenn ich es manuell ausführen.
Tomas M
1
Es könnte relevant sein, da ich auf Arch weder 70-persistent-net.rulesdas /lib/udev/write_net_rulesSkript noch das Skript habe. Daher kann ich nicht überprüfen, aber vermutlich ist die $INTERFACEVariable im Skript selbst festgelegt. Höchstwahrscheinlich wird es als Argument übergeben. Können Sie uns den Inhalt des Skripts zeigen?
Terdon
Das Skript verwendet einfach eine $INTERFACEVariable. Es werden viel mehr Variablen verwendet, die nie deklariert wurden. Dies liegt daran, dass es von udev aufgerufen wird und udev alle env-Variablen festlegt, bevor es das Skript beim Booten ausführt.
Tomas M
Müssen Sie tatsächlich wissen, wie man es regeneriert, oder können Sie die Datei einfach bearbeiten, um die neue Realität widerzuspiegeln?
Roaima

Antworten:

5

Laut Manpage --action=changeist der Standardwert für udevadm.

   -c, --action=ACTION
       Type of event to be triggered. The default value is change.

Deshalb versuchen Sie es --action=addlieber. Es sollte helfen:

/sbin/udevadm trigger --type=devices --action=add
eilen
quelle
intel_rapl: Keine gültigen Rapl-Domains in Paket 0 gefunden
Tiina
1

In Ubuntu Server 16.04LTS gibt es die 70-persistent-net.rules nicht.

alles was ich getan habe war gelaufen:

ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

Dann erstellen Sie die Datei mit

sudo vi /etc/systemd/network/10-internet.link

und fügen Sie Folgendes hinzu

[Match] 
Path=pci-0000:(your device mac address)

[Link] 
Name=eth0 (or whatever you want to name it)

:wq um die Datei zu speichern

Starten Sie dann neu und passen Sie die Datei / etc / network / interfaces an. Starten Sie dann erneut.

jadey1412
quelle
9
Die Frage lautet "Wie kann man 70-persistent-net.rules ohne Neustart neu generieren ? " Ihre Antwort enthält zwei Neustarts. Wie ist das eine Antwort auf die Frage?
G-Man sagt, dass Monica
0

Ich hatte das gleiche Problem, aber ich bemerkte, dass ich die Schnittstellen in der ip addrListe immer noch sehen konnte . Ich habe folgendes verwendet (als root):

# ip addr # to get my mac addresses
# export INTERFACE=eth0; export MATCHADDR="xx:xx:xx:xx:xx:xx"; /lib/udev/write_net_rules
# replace the 00's with the real mac addr

Wiederholen Sie dies für jede Schnittstelle. Dies wurde verwendet, um meine Datei "wiederherzustellen". (Hinweis: Ein Aufruf listet alle Schnittstellen auf und fügt eine Umbenennung für eine passende hinzu. Ich empfehle daher, die Ausgabedatei nach einem Aufruf zu überprüfen.)

Es gibt definitiv Unterschiede zwischen Betriebssystemen und aktuellen UDEV-Implementierungen und Support-Skripten. Zu beachten ist, dass ich CentOS 6.8 verwendet habe, als ich dies erfolgreich durchgeführt habe.

Gutschrift - Ich habe hauptsächlich auf diese Seite verwiesen. Es gibt ein paar Themen weiter, die sich mit dem Ändern des Skripts befassen, aber ich habe es vorgezogen, Umgebungsvariablen zu verwenden, da diese sauberer waren: https://access.redhat.com/discussions/1240213

Soße21
quelle
Mist - warte. Es tut mir leid, das war der Befehl, der nicht funktioniert hat. Ich muss die Antwort mit dem Schritt aktualisieren, den ich getan habe
gravy21
Ok, ich habe aktualisiert, wie ich meine tatsächlich repariert habe. Hoffe, es funktioniert, wenn es auf Ihre Situation zutrifft.
Soße21