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
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.
70-persistent-net.rules
né/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?$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.