Come rigenerare 70-persistent-net.rules senza riavviare?


14

Il file /etc/udev/rules.d/70-persistent-net.rulesviene generato automaticamente su un sistema Linux con udev, se non esiste, durante il riavvio. Ma vorrei sapere come creare questo file di regole (con un comando) senza riavviare il server.

Ho cercato su Google per un po 'e ho scoperto che il file delle regole è generato da questo script:

/lib/udev/write_net_rules

Tuttavia, è impossibile eseguire questo script dalla riga di comando, poiché (presumo) vuole essere avviato da udev, con alcune variabili di ambiente impostate correttamente. L'avvio stampa manualmente il messaggio di errore "mancante $ INTERFACE". Anche se ho impostato la variabile env INTERFACE = eth0 prima dell'inizio dello script, viene comunque stampato l'errore "mancante corrispondenza valida". Per non parlare del fatto che ho due interfacce ( eth0e eth1) e voglio il file delle regole generato per entrambi.

Stavo anche pensando di innescare eventi udev come questo, sperando che avvierà lo script da udev stesso, ma nulla cambia:

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

Quindi, qualcuno sa come rigenerare le regole di rete persistenti nel file /etc/udev/rules.d/70-persistent-net.rulessenza riavviare?


Qual è la tua distribuzione? Che tipo di sistema init utilizza?
michas,

1
Direi che è irrilevante. Sto usando Slackware con eUdev e sysvinit. Stavo esaminando gli script di avvio al fine di scoprire cosa viene eseguito che genera il file delle regole, ma ho trovato solo il trigger udevadm, con un commento che questo è il comando per generare le regole persistenti, ma in qualche modo funziona solo al riavvio, no effetto se lo eseguo manualmente.
Tomas M,

1
Potrebbe essere rilevante dal momento che io, su Arch, non ho 70-persistent-net.rulesné la /lib/udev/write_net_rulessceneggiatura né la . Pertanto, non posso verificare, ma presumibilmente la $INTERFACEvariabile è impostata nello script stesso. Molto probabilmente è passato come argomento. Puoi mostrarci il contenuto della sceneggiatura?
terdon

Lo script utilizza semplicemente $INTERFACEvariabile. Ci sono molte più variabili semplicemente usate, mai dichiarate. È perché viene chiamato da udev e udev imposta tutte le variabili env prima di eseguire lo script all'avvio.
Tomas M,

Hai davvero bisogno di sapere come rigenerarlo o potresti semplicemente modificare il file per riflettere la nuova realtà?
roaima,

Risposte:


5

Secondo la pagina man --action=changeè il valore predefinito per udevadm.

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

Quindi è meglio provare --action=addinvece. Dovrebbe aiutare:

/sbin/udevadm trigger --type=devices --action=add

intel_rapl: nessun dominio rapl valido trovato nel pacchetto 0
Tiina,

1

In Ubuntu Server 16.04LTS non esiste 70-persistent-net.rules.

tutto ciò che ho fatto è stato eseguito:

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

Quindi creare il file utilizzando

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

e aggiungi quanto segue

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

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

:wq per salvare il file

quindi riavviare e regolare il file / etc / network / interfaces. Quindi riavviare di nuovo.


9
La domanda è "Come rigenerare 70-persistent-net.rules senza riavviare? " La risposta contiene due riavvii. In che modo questa è una risposta alla domanda?
G-Man dice "Reinstate Monica" il

0

Ho avuto lo stesso problema, ma ho notato che potevo ancora vedere le interfacce ip addrnell'elenco. Ho usato il seguente (come 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

Ripetere l'operazione per ciascuna interfaccia. Questo è stato usato per "recuperare" il mio file. (Nota: un invocazione elencherà tutte le interfacce + aggiungi rinominare per abbinarne una, quindi ti consiglio di sbirciare il file di output dopo una invocazione)

Esistono sicuramente differenze tra il sistema operativo e le attuali implementazioni e script di supporto UDEV. Da notare, stavo usando CentOS 6.8 quando l'ho fatto con successo.

Credito: ho principalmente fatto riferimento a questo sito. C'è un commento su alcuni thread che parlano della modifica dello script, ma ho preferito usare le variabili di ambiente perché era più pulito: https://access.redhat.com/discussions/1240213


Merda - aspetta. Mi dispiace, quello era il comando che non funzionava. Ho bisogno di aggiornare la risposta con il passo che ho fatto
gravy21,

Ok, ho aggiornato il modo in cui ho risolto il mio. Spero che funzioni se si applica alla tua situazione.
gravy21,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.