Сценарий Администратора сети, когда интерфейс?

Поскольку я использую Бионического Бобра/Ubuntu 18.04, параметры сети в /etc/network/interfaces игнорируются и настройки в /etc/NetworkManager/system-connections/'eth0' используются для i) статического IP ii), шлюз и т.д.

Я хочу перезапустить sshd сервис каждый раз, когда интерфейс подходит. Это не работает в нормальном месте /etc/network/interfaces так как я использую Gnome. Куда я могу поместить сценарий NetworkManager, который будет выполнен каждый раз, когда определенный интерфейс подходит?

1
задан 21 January 2019 в 16:18

1 ответ

Решение состоит в том, чтобы создать сценарии диспетчеров в /etc/NetworkManager/dispatcher.d. Например, Вы могли зарегистрировать события в journald путем размещения следующего сценария в /etc/NetworkManager/dispatcher.d/log-iface-events.sh:

#!/usr/bin/env bash

interface=$1
event=$2

echo "$interface received $event" | systemd-cat -p info -t dispatch_script

Не забудьте давать ему полномочия выполнения:

chmod +x /etc/NetworkManager/dispatcher.d/log-iface-events.sh

Плохие новости - то, что сценарии больше не связываются с данным интерфейсом или событиями такой как или вниз. Следовательно, необходимо проверить все это в сценарии. Если Вы хотите, чтобы этот сценарий работал только за eth0, необходимо отфильтровать это рукой, поместив что-то как следующее в сценарии:

[[ $interface == "eth0" ]] || return 0

Например:

#!/usr/bin/env bash

interface=$1
event=$2

if [[ $interface != "eth0" ]] || [[ $event != "up" ]]
then
  return 0
fi

# place your commands bellow this line

Будет работать, только если это имеет дело с up события для eth0 интерфейс.

У Вас может быть много сценариев. Согласно man 8 networkmanager, сценарии будут работать в алфавитном порядке. Это, кажется, включает сценарии в подкаталоги. НЕОБХОДИМО прочитать эту страницу справочника.

3
ответ дан 3 December 2019 в 07:22

Другие вопросы по тегам:

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