
Я использую набор серверов на базе Debian Jessie и мне нужен надежный способ загрузки их локального сетевого IP-адреса при установлении сетевого соединения. Я написал скрипт, который это делает, и зарегистрировал его как службу systemd:
[Unit]
Description=Server Registration
Requires=network.target network-online.target
After=network.target network-online.target
[Service]
ExecStart=<script-location>
Type=simple
Restart=on-failure
WatchdogSec=21600
[Install]
WantedBy=multi-user.target
Увы, если бы это работало так, как ожидалось, это не было бы вопросом на SO. Скрипт использует команду route
для определения сетевого устройства, используемого по умолчанию, но не запускается, потому что маршрут завершается из-за того, что сеть еще не запущена. Кроме того, система может загрузиться без сетевого подключения и подключиться только позже, поэтому скрипт должен запускаться каждый раз, когда сеть активируется.
Сеть настроена с помощью systemd-networkd.
Как я могу гарантировать, что мой скрипт будет запущен всякий раз, когда сеть будет включена, а не раньше?