Как переназначить сетевые интерфейсы во время загрузки?

Если да:

bindkey | grep -F '^[x'

или просто:

bindkey '^[x'

или если вы сомневаетесь, как выразить Alt+x:

bindkey | grep -w x

Вот увидишь:

"^[x" execute-named-cmd

Это имя виджета, привязанного к ESC x, и большинство терминалов отправляют последовательность символов ESC x при нажатии Alt+x

info zsh execute-named-cmd

Сообщит вам, что делает этот виджет (вам может потребоваться установить пакет zsh-docна некоторых системах ).

Как следует из названия, он запрашивает команду для выполнения. Команды здесь — виджеты zsh, команды редактора. Это эквивалент emacs' Meta -x , за исключением того, что это команды редактора zsh вместо команды emacs(команда называется execute-extended-commandвemacs)

Например, если в этом приглашении вы наберете backward-delete-charи нажмете Return , будет вызван тот виджет, который по умолчанию привязан к Backspace . Вы можете сделать то же самое в emacs.

Если вместо этого вы наберетеdescВкладка(Вкладка для завершения в describe-key-briefly, виджет, не привязанный к какой-либо клавише по умолчанию, а также находящийся в emacs), и нажмите Возврат , вы увидите другую подсказку:

$
Describe key briefly: _

Где вы можете нажать, скажем, Alt+x , чтобы увидеть, что это должно сделать. Тогда вы получите:

"^[x" is execute-named-cmd

Если вы сделаете то же самое в emacs, вы увидите:

M-x runs the command execute-extended-command

Чтобы увидеть список виджетов, запустите zle -al, zle -lдля не -встроенных, bindkeyдля списка привязок клавиш.

Вы можете связать Alt+x с чем-то еще с помощью

bindkey "^[x" some-widget
0
25.12.2019, 12:27
1 ответ

Есть несколько способов решить эту проблему.

Наиболее привычным способом, вероятно, было бы отключить новую схему именования сетевых интерфейсов, используя параметр загрузки net.ifnames=0, или переопределив /lib/systemd/network/99-default.linkна ln -s /dev/null /etc/systemd/network/99-default.link, или замаскировав файл правил udev, который фактически реализует новый -имена стилей с ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules... см. вики Debian для получения дополнительной информации о различных способах возврата к классической схеме именования. Затем вы можете переписать свой /etc/network/interfacesтак, чтобы он просто использовал eth0.

Вероятно, самым гибким способом было бы отказаться от использования статического /etc/network/interfacesи переключиться на NetworkManager. По умолчанию он автоматически использует DHCP на сетевом интерфейсе с активной ссылкой, если нет дальнейшей настройки. Это будет автоматически обрабатывать даже случаи, когда у вас есть несколько сетевых карт, но фактически подключена только одна (, не обязательно первая ).

Или вы можете поступить по-своему, написав собственный сценарий, который будет читать ip link showвывод (или ссылки в/sys/class/network)и переписывать/etc/network/interfaces(или любой другой файл конфигурации вашей сети )в подходить. Затем вы можете добавить скрипт как службу systemd с Wants=network-pre.target, Before=network-pre.target, After=module-init-tools.serviceи, возможно, DefaultDependencies=no. Это должно позволить запустить сценарий как часть ранней настройки системы -после загрузки всех модулей, но до начала настройки сети.

1
28.01.2020, 02:38

Теги

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