Выполнение действия после подключения адаптера USB-to-Ethernet

Когда я подключаю USB-к -Адаптер Ethernet (который использовался ранее), я получаю MAC-адрес, а затем, если что-то подключено на другом конце, я также получаю IP-адрес (192.168.1.1 в моем случае, настроен как static в NetworkManager). На другом конце есть различные инструменты, которые ждут, пока DHCP-сервер, работающий на этом ПК, не предоставит им IP.

Проблема в том, что DHCP-сервер отказывается запускаться, если подсеть не найдена, поэтому он не может быть запущен до установления соединения. работает. Как мне выполнить systemctl restart isc-dhcp-server.service после того, как я получу IP 192.168.1.1 от NetworkManager?

Я хотя t использования правила udev с ATTR {address} == "f0: 1f: af: 3d: 6c: e7" RUN + = "systemctl restart isc-dhcp-server.service" , но оно выполняется до IP назначен. Могу ли я использовать опцию udev или мне нужно использовать другой метод через systemd, NetworkManager или что-то еще?

0
задан 12 December 2019 в 23:12

3 ответа

Наконец-то я потратил некоторое время на эту проблему и решил ее с помощью сценария, который я назвал restart-dhcpd.sh и поместил в /etc/NetworkManager/dispatcher.d/. (Примечание: после этого может потребоваться systemctl перезапустить network-manager.service и/или systemctl daemon-reload):

#! /bin/bash
IF=$1
STATUS=$2
case "$2" in
    dhcp4-change|up)
            logger -s "NM Script $STATUS $IF triggered"
            if [ "$1" = "enx6cf0496c6947" ]; then
                    /bin/systemctl restart isc-dhcp-server.service
            fi
    ;;
esac
0
ответ дан 3 November 2020 в 13:33

UDEV, запускающий службу systemd, — это способ сделать это.

Вы можете сопоставить свой usb-адаптер по идентификатору usb, слишком поздно, когда вы можете увидеть MAC-адрес.

в этом посте есть инструкции

https://unix.stackexchange.com/questions/229987/udev-rule-to-match-any-usb-storage-device

0
ответ дан 18 June 2020 в 14:25

В вашей системе настроен systemd .

Таким образом, одним из решений является добавление зависимости между isc-dhcp-server и USB-устройством.

  1. определите имя устройства в системе systemd
systemctl | grep -i sys-subsystem-net-devices.*6c.*e7

ps 6c и e7 — это последние 2 байта вашего Mac с вашего USB-устройства

у вас должно быть что-то вроде

 sys-subsystem-net-devices-enxf01faf3d6ce7.device
  1. изменить юнит-файл для isc-dhcp-server
export EDITOR=emacs # <= change to what you want 
systemctl edit isc-dhcp-server.service

и добавить эти строки

[Unit]
After=sys-subsystem-net-devices-enxf01faf3d6ce7.device
Wants=sys-subsystem-net-devices-enxf01faf3d6ce7.device
  1. reboot

  2. проверить состояние и конфигурацию isc-dhcp-server, выполнив эти команды

systemctl show --property=After isc-dhcp-server.service 

systemctl status isc-dhcp-server.service
0
ответ дан 20 June 2020 в 19:32

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

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