Hoe 70-persistent-net.rules te regenereren zonder opnieuw op te starten?

Het bestand /etc/udev/rules.d/70-persistent-net.rules wordt automatisch gegenereerd op een Linux-systeem met udev, als het niet bestaat, tijdens herstart. Maar ik zou graag willen weten hoe ik dit regelbestand (met een commando) kan maken zonder de server opnieuw op te starten.

Ik was een tijdje aan het googlen en ontdekte dat het regelsbestand wordt gegenereerd door dit script:

/lib/udev/write_net_rules 

Het is echter onmogelijk om dit script vanaf de opdrachtregel uit te voeren, aangezien (ik neem aan) het wil worden gestart door udev, met een aantal omgevingsvariabelen correct ingesteld. Als u het handmatig start, wordt de foutmelding “missing $ INTERFACE” afgedrukt. Zelfs als ik de env-variabele INTERFACE = eth0 instel voordat het script wordt gestart, wordt nog steeds de fout “missing valid match” afgedrukt. Om nog maar te zwijgen van het feit dat ik twee interfaces heb (eth0 en eth1) en ik wil dat het regelsbestand voor beide wordt gegenereerd.

Ik dacht er ook aan om udev-evenementen als deze te activeren, in de hoop dat het script vanuit udev zelf start, maar er verandert niets:

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

Dus, weet iemand dat hoe de persistente netregels in het bestand /etc/udev/rules.d/70-persistent-net.rules opnieuw te genereren zonder opnieuw op te starten?

Opmerkingen

  • Wat is uw distributie? Wat voor soort init-systeem gebruikt het?
  • Ik zou zeggen dat dat niet relevant is. Ik ' gebruik Slackware met eUdev en sysvinit. Ik was de opstartscripts aan het onderzoeken om erachter te komen wat er wordt uitgevoerd waardoor het regelbestand wordt gegenereerd, maar ik vond alleen de udevadm-trigger, met de opmerking dat dit de opdracht is om de permanente regels te genereren, maar op de een of andere manier werkt dit alleen bij het opnieuw opstarten, nee effect als ik het handmatig uitvoer.
  • Het kan relevant zijn omdat ik op Arch noch de 70-persistent-net.rules noch de /lib/udev/write_net_rules script. Daarom kan ik ' niet controleren, maar vermoedelijk is de variabele $INTERFACE in het script zelf ingesteld. Hoogstwaarschijnlijk wordt het aangenomen als argument. Kunt u ons de inhoud van het script laten zien?
  • Het script gebruikt eenvoudig de variabele $INTERFACE. Er zijn veel meer variabelen die eenvoudigweg worden gebruikt, nooit worden verklaard. Het ' is omdat het wordt aangeroepen door udev, en udev stelt alle env-variabelen in voordat het script bij het opstarten wordt uitgevoerd.
  • Moet je echt weten hoe regenereer het, of zou je het bestand eenvoudig kunnen bewerken om de nieuwe realiteit weer te geven?

Answer

Volgens man pagina --action=change is de standaardwaarde voor udevadm.

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

Daarom kunt u beter --action=add proberen. Het zou moeten helpen:

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

Reacties

  • intel_rapl: geen geldige rapl-domeinen gevonden in pakket 0

Answer

In Ubuntu Server 16.04LTS bestaat de 70-persistent-net.rules niet.

alles wat ik deed, was:

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

Maak vervolgens het bestand met

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

en voeg het volgende toe

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

:wq om het bestand op te slaan

start vervolgens opnieuw op en pas je / etc / network / interfaces-bestand aan. Start vervolgens opnieuw op.

Opmerkingen

  • De vraag is " Hoe 70-persistent-net.rules opnieuw te genereren zonder opnieuw op te starten? " Je antwoord bevat twee keer opnieuw opstarten. Hoe is dit een antwoord op de vraag?

Antwoord

Ik had hetzelfde probleem, maar ik merkte dat ik kon nog steeds de interfaces zien in de ip addr lijst. Ik heb het volgende gebruikt (als 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 

Herhaal voor elke interface. Dit werd gebruikt om mijn bestand te “herstellen”. (Opmerking: één aanroep zal alle interfaces weergeven + hernoemen voor overeenkomende, dus ik raad je aan om het uitvoerbestand na één aanroep te bekijken)

Er zijn zeker verschillen tussen besturingssysteem en huidige UDEV-implementaties en ondersteuningsscripts . Merk op dat ik CentOS 6.8 gebruikte toen ik dit met succes deed.

Credit – ik verwees meestal naar deze site. Er is een opmerking een paar threads verderop die praten over het aanpassen van het script, maar ik gaf er de voorkeur aan om omgevingsvariabelen zoals het was schoner: https://access.redhat.com/discussions/1240213

Reacties

  • Crap – wacht. Ik ' m sorry, dat was de opdracht die niet werkte. Ik moet het antwoord bijwerken met de stap die ik deed
  • Oké, ik ' heb bijgewerkt naar hoe ik de mijne heb gerepareerd. Ik hoop dat het werkt als het van toepassing is op jouw situatie.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *