Jak zregenerować 70-persistent-net.rules bez restartu?

Plik /etc/udev/rules.d/70-persistent-net.rules jest generowany automatycznie w systemie Linux z udev, jeśli nie istnieje, podczas restart. Ale chciałbym wiedzieć, jak utworzyć ten plik reguł (za pomocą polecenia) bez ponownego uruchamiania serwera.

Przez chwilę googlowałem i odkryłem, że plik reguł jest generowany przez ten skrypt:

/lib/udev/write_net_rules 

Jednak nie jest możliwe uruchomienie tego skryptu z linii poleceń, ponieważ (zakładam) chce być uruchamiany przez udev, z niektórymi zmiennymi środowiskowymi ustawionymi prawidłowo. Uruchomienie go ręcznie powoduje wyświetlenie komunikatu o błędzie „brak interfejsu $ INTERFACE”. Nawet jeśli ustawię zmienną env INTERFACE = eth0 przed uruchomieniem skryptu, nadal wyświetla błąd „brak prawidłowego dopasowania”. Nie wspominając o tym, że mam dwa interfejsy (eth0 i eth1) i chcę, aby plik reguł został wygenerowany dla obu.

Myślałem też o wywołaniu takich zdarzeń udev, mając nadzieję, że uruchomi skrypt od samego udev, ale nic się nie zmienia:

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

Czy ktoś wie jak zregenerować trwałe reguły sieciowe w pliku /etc/udev/rules.d/70-persistent-net.rules bez ponownego uruchamiania?

Komentarze

  • Jaki jest Twój dystrybucja? Jakiego rodzaju systemu init używa?
  • Powiedziałbym, że to nieistotne. ' Używam Slackware z eUdev i sysvinit. Sprawdzałem skrypty startowe, aby dowiedzieć się, co jest wykonywane, co generuje plik reguł, ale znalazłem tylko wyzwalacz udevadm, z komentarzem, że jest to polecenie do generowania trwałych reguł, ale jakoś działa to tylko przy ponownym uruchomieniu, nie efekt, jeśli uruchomię go ręcznie.
  • Może to mieć znaczenie, ponieważ w Arch nie mam ani 70-persistent-net.rules, ani /lib/udev/write_net_rules skrypt. Dlatego mogę ' t sprawdzić, ale przypuszczalnie zmienna $INTERFACE jest ustawiona w samym skrypcie. Najprawdopodobniej jest przekazywana jako argument. Czy możesz pokazać nam zawartość skryptu?
  • Skrypt używa po prostu zmiennej $INTERFACE. Jest znacznie więcej zmiennych po prostu używanych, nigdy nie zadeklarowanych. Jest ', ponieważ jest wywoływany przez udev, a udev ustawia wszystkie zmienne env przed uruchomieniem skryptu podczas rozruchu.
  • Czy naprawdę musisz wiedzieć, jak zregeneruj go, czy możesz po prostu edytować plik, aby odzwierciedlić nową rzeczywistość?

Odpowiedź

Według man strona --action=change to domyślna wartość dla udevadm.

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

Dlatego lepiej zamiast tego spróbuj --action=add. To powinno pomóc:

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

Komentarze

  • intel_rapl: nie znaleziono prawidłowych domen rapl w pakiecie 0

Odpowiedź

W Ubuntu Server 16.04LTS nie istnieje 70-persistent-net.rules.

wszystko, co zrobiłem, to uruchomienie:

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

Następnie utwórz plik za pomocą

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

i dodaj następujące

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

:wq, aby zapisać plik

następnie uruchom ponownie i dostosuj plik / etc / network / interfaces. Następnie uruchom ponownie ponownie.

Komentarze

  • Pytanie brzmi " Jak zregenerować 70-persistent-net.rules bez restartu? " Twoja odpowiedź zawiera dwa ponowne uruchomienia. Jak to jest odpowiedź na pytanie?

Odpowiedź

Miałem ten sam problem, ale zauważyłem, że nadal widzi interfejsy w ip addr lista. Użyłem (jako 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 

Powtórz dla każdego interfejsu. Służyło to do „odzyskiwania” mojego pliku. (Uwaga: jedno wywołanie wyświetli listę wszystkich interfejsów + doda zmianę nazwy w celu dopasowania jednego, więc polecam zajrzeć do pliku wyjściowego po jednym wywołaniu)

Zdecydowanie istnieją różnice między systemami operacyjnymi a obecnymi implementacjami UDEV i skryptami pomocniczymi . Uwaga: korzystałem z CentOS 6.8, kiedy to się udało.

Kredyt – głównie odwoływałem się do tej witryny. W kilku wątkach jest komentarz, który mówi o modyfikacji skryptu, ale wolałem użyć zmienne środowiskowe, jak było czystsze: https://access.redhat.com/discussions/1240213

Komentarze

  • Bzdura – czekaj. ' przepraszam, to było polecenie, które nie zadziałało. Muszę zaktualizować odpowiedź o krok, który wykonałem
  • OK, zaktualizowałem ' do tego, jak naprawiłem mój. Mam nadzieję, że zadziała, jeśli dotyczy Twojej sytuacji.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *