Plik /etc/udev/rules.d/70-persistent-net.rules
jest generowany automatycznie w systemie Linux z udev, jeśli nie istnieje, podczas ponownego uruchamiania. Chciałbym jednak wiedzieć, jak utworzyć ten plik reguł (z poleceniem) bez ponownego uruchamiania serwera.
Przeszukiwałem go przez jakiś czas i odkryłem, że plik reguł jest generowany przez ten skrypt:
/lib/udev/write_net_rules
Nie można jednak uruchomić tego skryptu z wiersza poleceń, ponieważ (zakładam) chce on zostać uruchomiony przez udev, a niektóre zmienne środowiskowe są ustawione poprawnie. Uruchomienie go ręcznie powoduje wyświetlenie komunikatu o błędzie „brak $ INTERFACE”. Nawet jeśli ustawię zmienną env INTERFACE = eth0 przed uruchomieniem skryptu, nadal wyświetla błąd „brak prawidłowego dopasowania”. Nie wspominając, że mam dwa interfejsy ( eth0
i eth1
) i chcę wygenerować plik reguł dla obu.
Myślałem również 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?
70-persistent-net.rules
ani/lib/udev/write_net_rules
scenariusza, ani scenariusza. Dlatego nie mogę sprawdzić, ale przypuszczalnie$INTERFACE
zmienna jest ustawiona w samym skrypcie. Najprawdopodobniej jest przekazywany jako argument. Czy możesz pokazać nam zawartość skryptu?$INTERFACE
zmiennej. Po prostu używa się znacznie więcej zmiennych, nigdy nie deklarowanych. Jest tak, ponieważ jest wywoływany przez udev, a udev ustawia wszystkie zmienne env przed uruchomieniem skryptu podczas rozruchu.Odpowiedzi:
Według strony man
--action=change
wartością domyślną jestudevadm
.Dlatego lepiej spróbuj
--action=add
zamiast tego. Powinno pomóc:źródło
W Ubuntu Server 16.04LTS 70-persistent-net.rules nie istnieje.
wszystko, co zrobiłem, to uruchomić:
Następnie utwórz plik za pomocą
i dodaj następujące
:wq
aby zapisać pliknastępnie uruchom ponownie i dostosuj plik / etc / network / interfaces. Następnie uruchom ponownie komputer.
źródło
Miałem ten sam problem, ale zauważyłem, że wciąż widzę interfejsy na
ip addr
liście. Użyłem następujących (jako root):Powtórz dla każdego interfejsu. Służyło to do „odzyskania” mojego pliku. (Uwaga: jedno wywołanie spowoduje wyświetlenie listy wszystkich interfejsów + dodanie zmiany nazwy w celu dopasowania jednego, dlatego polecam przejrzenie pliku wyjściowego po jednym wywołaniu)
Z pewnością istnieją różnice między systemem operacyjnym a obecnymi implementacjami UDEV i skryptami pomocniczymi. Należy zauważyć, że korzystałem z CentOS 6.8, kiedy udało mi się to z powodzeniem.
Kredyt - najczęściej odwoływałem się do tej witryny. Jest kilka komentarzy na temat modyfikacji skryptu, ale wolałem używać zmiennych środowiskowych, ponieważ były one czystsze: https://access.redhat.com/discussions/1240213
źródło