Как мне показать старые имена eth0, а также переименовать сетевые интерфейсы в debian 9 stretch?

Нет, но ваш сценарий будет переносимым до тех пор, пока вы избегаете любого начального пробела. Почему ? Поскольку некоторые sed удаляют пустые символы из текстовых строк, и единственный способ избежать этого - избежать начального пробела, как объясняют эти страницы руководства, относящиеся к прошлому веку: 1 , 2 , 3
То же самое касается BSD sed ( OSX просто скопировал код, это не их расширение), и если вы проверяете архивы и читаете страницу man из BSD 2.11 , это довольно ясно:

(1) i \
text
.......
Аргумент, обозначенный текст , состоит из одной или нескольких строк, все, кроме последней, заканчиваются на '\' , чтобы скрыть новая линия. Обратные косые черты в тексте обрабатываются как обратные косые черты в строке замены команды ' и могут использоваться для защиты начальных пробелов и вкладок от удаление, которое выполняется в каждой строке скрипта.

А где это задокументировано в спецификации POSIX? Он только говорит

. Текст аргумента должен состоять из одной или нескольких строк. Каждому встроенному в тексте должен предшествовать . Остальные символы в тексте должны быть удалены, а следующий символ должен рассматриваться буквально.

и если вы прокрутите вниз под ОБОСНОВАНИЕ , появится

Требования к разрешению символов и в командных строках стали более явными, чем в ранних предложения четко описать историческую практику и устранить путаницу в отношении фразы "защитить начальные пробелы [sic] и табуляции от удаления , которое выполняется в каждой строке скрипта", появляется в большей части исторической документации описания текста утилитой sed. (Известно, что не во всех реализациях были удалены символы из текстовых строк , хотя во всех них разрешены ведущие символы перед адресом в командной строке. )

Так как часть с «обратная косая черта может использоваться, чтобы» не была включена в эту цитату, оставшаяся фраза «защищает начальные пробелы ...» не делает никаких смысл ... 1


В общем, подведем итог: некоторые реализации удаляли (а некоторые до сих пор это делают) убирают пробелы из текстовых строк. Однако, поскольку спецификация POSIX, которой должны соответствовать все реализации, говорит

Другие символы в тексте должны быть удалены, а следующий за ним символ должен рассматриваться буквально.

мы можем сделать вывод, что переносимый способ отступа строк в тексте, который нужно вставить, заключается в экранировании начального пробела в каждой из этих строк.


1: Я также не понимаю, почему OSX / BSD люди изменили весь абзац на странице man без изменения исходного кода - вы получить то же поведение, что и раньше, но раздела man, который документирует этот материал, больше нет.

12
06.10.2017, 02:16
3 ответа

Создать файл ниже, если его нет

nano /etc/udev/rules.d/70-persistent-net.rules

добавить строку ниже

# interface with MAC address "00:0c:30:50:48:a1" will be assigned "eth0"
# KERNEL=="enp3s0" is debians current interface name
# NAME="eth0" is a new ethernet interface name
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:30:50:48:a1", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="enp3s0", NAME="eth0"
0
27.01.2020, 19:54

Я нашел очень простой способ, изменив только/etc/network/interfaces:

rename enp3s0=wan0

Тогда

service networking restart

для перезапуска сетевой службы.

2
27.01.2020, 19:54

В наши дни systemd.link -Конфигурация сетевых устройств предлагает удобный способ постоянного переименования интерфейсов.

1
08.01.2021, 07:56

Теги

Похожие вопросы