Як відновити 70-стійкі-net.rules без перезавантаження?


14

Файл /etc/udev/rules.d/70-persistent-net.rulesавтоматично генерується в системі Linux з udev, якщо його не існує, під час перезавантаження. Але я хотів би знати, як створити цей файл правил (за допомогою команди) без перезавантаження сервера.

Я деякий час гуляв навколо і виявив, що файл правил генерується цим сценарієм:

/lib/udev/write_net_rules

Однак запустити цей скрипт із командного рядка неможливо, оскільки (я припускаю) його потрібно запустити udev, при цьому деякі змінні середовища встановлені належним чином. Почавши це вручну, друкується повідомлення про помилку "відсутній $ INTERFACE". Навіть якщо я встановив змінну env INTERFACE = eth0 перед початком сценарію, він все одно надрукує помилку "відсутня допустима відповідність". Не кажучи вже про те, що у мене є два інтерфейси ( eth0і eth1), і я хочу, щоб файл правил був створений для обох.

Я також думав викликати подібні події udev, сподіваючись, що це почне сценарій із самого udev, але нічого не зміниться:

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

Отже, хтось знає, як відновити стійкі чисті правила у файлі /etc/udev/rules.d/70-persistent-net.rulesбез перезавантаження?


Який ваш розподіл? Яку систему init вона використовує?
michas

1
Я б сказав, що це не має значення. Я використовую Slackware з eUdev та sysvinit. Я розглядав сценарії запуску, щоб дізнатися, що виконується, що генерує файл правил, але виявив лише тригер udeADEm, з коментарем, що це команда для створення стійких правил, але якимось чином це працює лише при перезавантаженні, ні ефект, якщо я запускаю його вручну.
Томаш М

1
Це може бути актуально, оскільки у мене, на Arch, немає ні 70-persistent-net.rulesані /lib/udev/write_net_rulesсценарію. Тому я не можу перевірити, але, мабуть, $INTERFACEзмінна встановлена ​​в самому сценарії. Швидше за все, це передається як аргумент. Чи можете ви показати нам вміст сценарію?
terdon

Сценарій просто використовує $INTERFACEзмінну. Є набагато більше змінних, які просто використовуються, ніколи не декларуються. Це тому, що його називають udev, а udev встановлює всі env змінні, перш ніж запускати скрипт під час завантаження.
Томаш М

Чи потрібно насправді знати, як відновити його, чи ви могли просто відредагувати файл, щоб відобразити нову реальність?
roaima

Відповіді:


5

За даними man, сторінка --action=changeє типовим значенням для udevadm.

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

Тому краще спробуйте --action=addзамість цього. Це повинно допомогти:

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

intel_rapl: в пакеті 0 не знайдено дійсних доменів rapl
Tiina

1

У сервері Ubuntu 16.04LTS 70-стійких-net.rules не існує.

все, що я зробив, було запущено:

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

Потім створіть файл за допомогою

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

і додати наступне

[Match] 
Path=pci-0000:(your device mac address)

[Link] 
Name=eth0 (or whatever you want to name it)

:wq щоб зберегти файл

потім перезавантажте та налаштуйте файл / etc / network / interface. Потім знову перезавантажте.


9
Питання «Як відновити 70-стійкі-net.rules без перезавантаження? » Ваша відповідь містить два перезавантаження. Як це відповідь на запитання?
G-Man каже: «Відновіть Моніку»

0

У мене була така ж проблема, але я помітив, що все ще бачу інтерфейси у ip addrсписку. Я використовував наступне (як 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

Повторіть для кожного інтерфейсу. Це було використано для "відновлення" мого файлу. (Примітка: одне виклик перелічить усі інтерфейси + додасть перейменування для відповідності, тому я рекомендую зазирнути у вихідний файл після одного виклику)

Однозначно існують відмінності між ОС та поточними реалізаціями UDEV та сценаріями підтримки. Зауважимо, що я використовував CentOS 6.8, коли це робив успішно.

Кредит - в основному я посилався на цей сайт. У коментарі є кілька ниток, які говорять про зміну сценарію, але я вважав за краще використовувати змінні середовища, оскільки він був чистішим: https://access.redhat.com/discussions/1240213


Лайно - чекай. Перепрошую, це була команда, яка не спрацювала. Мені потрібно оновити відповідь кроком, який я зробив
gravy21

Гаразд, я оновив, як я фактично виправив свою. Сподіваємось, це спрацює, якщо стосується вашої ситуації.
gravy21
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.