Hvordan regenerere 70-persistent-net.rules uten omstart?

Filen /etc/udev/rules.d/70-persistent-net.rules genereres automatisk på et Linux-system med udev, hvis det ikke eksisterer, under start på nytt. Men jeg vil vite hvordan du lager denne reglerfilen (med en kommando) uten å starte serveren på nytt.

Jeg googlet rundt en stund og fant ut at regelfilen er generert av dette skriptet:

/lib/udev/write_net_rules 

Det er imidlertid umulig å kjøre dette skriptet fra kommandolinjen, siden (antar jeg) det vil bli startet av udev, med noen miljøvariabler satt riktig. Å starte den manuelt skriver ut feilmeldingen «mangler $ INTERFACE». Selv om jeg setter env-variabelen INTERFACE = eth0 før skriptet startes, blir det fortsatt skrevet ut feil «mangler gyldig samsvar». For ikke å nevne at jeg har to grensesnitt (eth0 og eth1), og jeg vil at regelfilen skal genereres for begge.

Jeg tenkte også å utløse udev-hendelser som dette, og håpet at det vil starte skriptet fra udev selv, men ingenting endres:

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

Så, vet noen hvordan regenererer du de vedvarende nettreglene i fil /etc/udev/rules.d/70-persistent-net.rules uten omstart?

Kommentarer

  • Hva er din fordeling? Hva slags init-system bruker det?
  • Jeg vil si det er irrelevant. Jeg ' bruker Slackware med eUdev og sysvinit. Jeg undersøkte oppstartsskriptene for å finne ut hva som utføres som genererer reglerfilen, men fant bare udevadm-utløseren, med en kommentar om at dette er kommandoen for å generere de vedvarende reglene, men på en eller annen måte fungerer dette bare ved omstart, nei effekt hvis jeg kjører den manuelt.
  • Det kan være aktuelt siden jeg på Arch hverken har 70-persistent-net.rules eller /lib/udev/write_net_rules skript. Derfor kan jeg ' t sjekke, men antagelig er $INTERFACE variabelen satt i selve skriptet. Mest sannsynlig blir det bestått som et argument. Kan du vise oss innholdet i skriptet?
  • Skriptet bruker ganske enkelt $INTERFACE variabel. Det er mye flere variabler som bare brukes, aldri erklært. Det ' s fordi det kalles av udev, og udev setter alle env-variabler før det kjører skriptet ved oppstart.
  • Trenger du faktisk å vite hvordan du regenerere den, eller kan du bare redigere filen for å gjenspeile den nye virkeligheten?

Svar

Ifølge mennesket side --action=change er standardverdien for udevadm.

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

Derfor bør du prøve --action=add i stedet. Det skal hjelpe:

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

Kommentarer

  • intel_rapl: ingen gyldige rapl-domener funnet i pakke 0

Svar

I Ubuntu Server 16.04LTS eksisterer ikke 70-persistent-net.rules.

alt jeg gjorde var å kjøre:

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

Opprett deretter filen ved hjelp av

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

og legg til følgende

[Match] Path=pci-0000:(your device mac address) [Link] Name=eth0 (or whatever you want to name it) 

:wq for å lagre filen

Start deretter på nytt og juster filen / etc / nettverk / grensesnitt. Start deretter på nytt.

Kommentarer

  • Spørsmålet er " Hvordan regenererer du 70-persistent-net.rules uten omstart? " Svaret ditt inneholder to omstart. Hvordan er dette svaret på spørsmålet?

Svar

Jeg hadde det samme problemet, men jeg la merke til at jeg kunne fortsatt se grensesnittene i ip addr liste. Jeg brukte følgende (som rot):

# 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 

Gjenta for hvert grensesnitt. Dette ble brukt til å «gjenopprette» filen min. (Merk: en påkallelse vil liste opp alle grensesnittene + legge til navn for å matche en, så jeg anbefaler deg å kikke på utdatafilen etter en påkallelse)

Det er definitivt forskjeller mellom OS-er og nåværende UDEV-implementeringer og støtteskript For å merke seg brukte jeg CentOS 6.8 da jeg gjorde dette.

Kreditt – Jeg refererte mest til dette nettstedet. Det er en kommentar noen tråder ned som snakker om å endre skriptet, men jeg foretrakk å bruke miljøvariabler som det var renere: https://access.redhat.com/discussions/1240213

Kommentarer

  • Crap – vent. Jeg ' beklager, det var kommandoen som ikke fungerte. Jeg må oppdatere svaret med trinnet jeg gjorde
  • Ok, jeg ' har oppdatert hvordan jeg faktisk fikset meg. Håper det fungerer hvis det gjelder din situasjon.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *