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

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

Stavo cercando su Google per un po e ho scoperto che il file di regole è generato da questo script:

/lib/udev/write_net_rules 

Tuttavia, è impossibile eseguire questo script dalla riga di comando, poiché (presumo) voglia essere avviato da udev, con alcune variabili di ambiente impostate correttamente. Avviandolo manualmente viene stampato il messaggio di errore “$ INTERFACCIA mancante”. Anche se ho impostato la variabile env INTERFACE = eth0 prima dellinizio dello script, viene comunque stampato lerrore “corrispondenza valida mancante”. Per non parlare del fatto che ho due interfacce (eth0 e eth1) e voglio che il file delle regole venga generato per entrambe.

Stavo anche pensando di attivare eventi udev come questo, sperando che avvii lo script da udev stesso, ma non cambia nulla:

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

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

Commenti

  • Qual è il tuo distribuzione? Che tipo di sistema di inizializzazione usa?
  • Direi che è irrilevante. ' utilizzo Slackware con eUdev e sysvinit. Stavo esaminando gli script di avvio per 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.
  • Potrebbe essere rilevante poiché io, su Arch, non ho né 70-persistent-net.rules/lib/udev/write_net_rules script. Pertanto, non posso ' controllare, ma presumibilmente la variabile $INTERFACE è impostata nello script stesso. Molto probabilmente è passato come argomento. Puoi mostrarci il contenuto dello script?
  • Lo script utilizza semplicemente la variabile $INTERFACE. Ci sono molte più variabili usate semplicemente, mai dichiarate. È ' perché è chiamato da udev e udev imposta tutte le variabili env prima che esegua lo script allavvio.
  • Hai davvero bisogno di sapere come rigenerarlo o potresti semplicemente modificare il file per riflettere la nuova realtà?

Risposta

Secondo man pagina --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=add. Dovrebbe aiutare:

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

Commenti

  • intel_rapl: nessun dominio rapl valido trovato nel pacchetto 0

Risposta

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

tutto quello che ho fatto è stato eseguire:

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 riavvia e regola il tuo file / etc / network / interfaces. Quindi riavvia di nuovo.

Commenti

  • La domanda è " Come rigenerare 70-persistent-net.rules senza riavviare? " La tua risposta contiene due riavvii. In che modo questa è una risposta alla domanda?

Risposta

Ho avuto lo stesso problema, ma ho notato potrebbe ancora vedere le interfacce in ip addr elenco. Ho usato quanto segue (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 

Ripeti per ogni interfaccia. Questo è stato utilizzato per “recuperare” il mio file. (Nota: una chiamata elencherà tutte le interfacce + aggiungi rinomina per abbinarne una, quindi ti consiglio di dare unocchiata al file di output dopo una chiamata)

Ci sono sicuramente differenze tra il sistema operativo e le attuali implementazioni UDEV e script di supporto . Da notare, stavo usando CentOS 6.8 quando lho fatto con successo.

Credito: ho fatto principalmente riferimento a questo sito. Cè un commento alcuni thread più in basso che parla della modifica dello script, ma ho preferito usare variabili dambiente perché era più pulito: https://access.redhat.com/discussions/1240213

Commenti

  • Crap – wait. Mi ' scusa, quello era il comando che non ha funzionato. Devo aggiornare la risposta con il passaggio che ho fatto
  • Ok, ' ho aggiornato il modo in cui ho effettivamente risolto il mio. Spero che funzioni se si applica alla tua situazione.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *