Hur återskapar jag 70-persistent-net.rules utan omstart?

Filen /etc/udev/rules.d/70-persistent-net.rules genereras automatiskt på ett Linux-system med udev, om det inte finns under starta om. Men jag skulle vilja veta hur man skapar den här reglerfilen (med ett kommando) utan att starta om servern.

Jag googlade ett tag och fann att reglerfilen genereras av det här skriptet:

/lib/udev/write_net_rules 

Det är dock omöjligt att köra det här skriptet från kommandoraden, eftersom (jag antar) det vill startas av udev, med vissa miljövariabler korrekt inställda. När du startar det skrivs ut felmeddelandet ”saknar $ INTERFACE”. Även om jag ställer in env-variabeln INTERFACE = eth0 innan manuset startade skrivs det fortfarande ut fel ”saknar giltig matchning”. För att inte nämna att jag har två gränssnitt (eth0 och eth1) och jag vill att reglerfilen ska skapas för båda.

Jag tänkte också utlösa utev-händelser som denna, hoppas att det kommer att starta skriptet från udev själv, men ingenting ändras:

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

Så, vet någon hur man återskapar de ihållande nätreglerna i filen /etc/udev/rules.d/70-persistent-net.rules utan omstart?

Kommentarer

  • Vad är din distribution? Vilken typ av init-system använder den?
  • Jag skulle säga att det är irrelevant. Jag ' använder Slackware med eUdev och sysvinit. Jag undersökte startskript för att ta reda på vad som körs som genererar reglerfilen, men hittade bara udevadm-utlösaren, med en kommentar att detta är kommandot för att generera de ihållande reglerna, men på något sätt fungerar det bara vid omstart, nej effekt om jag kör den manuellt.
  • Det kan vara relevant eftersom jag på Arch varken har 70-persistent-net.rules eller /lib/udev/write_net_rules skript. Därför kan jag ' t kontrollera, men förmodligen är $INTERFACE variabeln inställd i själva skriptet. Troligtvis skickas det som ett argument. Kan du visa innehållet i skriptet?
  • Skriptet använder helt enkelt $INTERFACE variabel. Det finns mycket fler variabler som helt enkelt används, aldrig deklareras. Det ' beror på att det anropas av udev och udev ställer in alla env-variabler innan det körs skriptet vid start.
  • Behöver du faktiskt veta hur man regenerera den, eller kan du helt enkelt redigera filen för att återspegla den nya verkligheten?

Svar

Enligt människan sida --action=change är standardvärdet för udevadm.

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

Testa därför bättre --action=add istället. Det skulle hjälpa:

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

Kommentarer

  • intel_rapl: inga giltiga rapl-domäner hittades i paket 0

Svar

I Ubuntu Server 16.04LTS existerar inte 70-persistent-net.rules.

allt jag gjorde var att köra:

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

Skapa sedan filen med

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

och lägg till följande

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

:wq för att spara filen

starta om och justera filen / etc / nätverk / gränssnitt. Starta sedan om igen.

Kommentarer

  • Frågan är " Hur återskapar man 70-persistent-net.rules utan omstart? " Ditt svar innehåller två omstarter. Hur är detta ett svar på frågan?

Svar

Jag hade samma problem, men jag märkte att jag kunde fortfarande se gränssnitten i ip addr -lista. Jag använde följande (som 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 

Upprepa för varje gränssnitt. Detta användes för att ”återställa” min fil. (Obs: en anrop kommer att lista alla gränssnitt + lägg till namn för att matcha ett, så jag rekommenderar att du tittar på utdatafilen efter en anrop)

Det finns definitivt skillnader mellan OS: s och nuvarande UDEV-implementeringar och supportskript För att notera, jag använde CentOS 6.8 när jag gjorde detta framgångsrikt.

Kredit – Jag hänvisade mest till den här webbplatsen. Det finns en kommentar några trådar ner som talar om att ändra skriptet, men jag föredrog att använda miljövariabler som det var renare: https://access.redhat.com/discussions/1240213

Kommentarer

  • Skit – vänta. Jag ' ledsen, det var kommandot som inte fungerade. Jag måste uppdatera svaret med det steg jag gjorde
  • Ok, jag ' har uppdaterat hur jag faktiskt fixade min. Hoppas det fungerar om det gäller din situation.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *