Каков эквивалент pre-up post-down ifupdown скриптов в systemd-networkd? В /etc/network/interfaces можно задать скрипты, которые выполняются перед/после "поднятия/опускания" интерфейсов. Как это реализовать в systemd-networkd? Если для pre-up ещё можно создать юнит с network-pre.target (хотя это немного не то, насколько я понимаю), то как быть со вторым? Да и не сильно ли это усложнённо по сравнению с парой строчек в interfaces?
В systemd-networkd нет прямого эквивалента для pre-up и post-down скриптов как в /etc/network/interfaces. Однако вы можете использовать юниты systemd для выполнения дополнительных действий перед/после поднятия/опускания интерфейсов.
Для того чтобы выполнить действие перед поднятием интерфейса, вы можете создать unit файл, который будет зависеть от юнита, отвечающего за событие поднятия интерфейса. Например, для выполнения скрипта перед поднятием интерфейса eth0, вы можете создать следующий unit файл:
/etc/systemd/system/pre-up-script.service
[Unit] Description=Script to run before bringing up eth0 [Service] Type=oneshot ExecStart=/path/to/your/pre-up-script.sh [Install] WantedBy=network-online.target
Для выполнения действия после опускания интерфейса можно использовать Service Unit с настройкой ExecStop. Создайте юнит с аналогичной структурой, но с настройкой ExecStop.
Затем добавьте зависимость на этот юнит в юнит, отвечающий за соответствующий интерфейс, используя опцию After= в разделе [Unit].
Не стоит говорить, что такой подход может показаться более сложным, чем просто добавление скриптов в /etc/network/interfaces, однако systemd предоставляет более гибкий и мощный механизм управления событиями в сравнении с классическими скриптами ifupdown.
В systemd-networkd нет прямого эквивалента для pre-up и post-down скриптов как в /etc/network/interfaces. Однако вы можете использовать юниты systemd для выполнения дополнительных действий перед/после поднятия/опускания интерфейсов.
Для того чтобы выполнить действие перед поднятием интерфейса, вы можете создать unit файл, который будет зависеть от юнита, отвечающего за событие поднятия интерфейса. Например, для выполнения скрипта перед поднятием интерфейса eth0, вы можете создать следующий unit файл:
/etc/systemd/system/pre-up-script.service
[Unit]Description=Script to run before bringing up eth0
[Service]
Type=oneshot
ExecStart=/path/to/your/pre-up-script.sh
[Install]
WantedBy=network-online.target
Для выполнения действия после опускания интерфейса можно использовать Service Unit с настройкой ExecStop. Создайте юнит с аналогичной структурой, но с настройкой ExecStop.
Затем добавьте зависимость на этот юнит в юнит, отвечающий за соответствующий интерфейс, используя опцию After= в разделе [Unit].
Не стоит говорить, что такой подход может показаться более сложным, чем просто добавление скриптов в /etc/network/interfaces, однако systemd предоставляет более гибкий и мощный механизм управления событиями в сравнении с классическими скриптами ifupdown.