У меня есть пользовательское новомодное задание, которое инициировало ряд сервисов:
/etc/init/auto-gateway.conf
:
description "Auto-GateWay" author "g4gvideo@gmail.com" emits gw-is-up emits gw-is-down start on (net-device-up or net-device-down) task script if route | grep -q "default"; then initctl emit -n gw-is-up else initctl emit -n gw-is-down fi end script
Это работает работы чрезвычайно хорошо над ноутбуками, которые часто разъединяются и соединяются из сетей, или когда они спят и пробуждение. Это также работает над моими серверами когда изменения сети.
Я пытаюсь преобразовать это простое новомодное задание в systemd. Моя первая попытка:
/etc/systemd/system/auto-gateway.service
:
[Unit] Description=Auto-Gateway service After=network-online.target [Service] ExecStart=/usr/sbin/auto-gateway KillMode=process Restart=always Type=forking TimeoutStartSec=infinity [Install] WantedBy=multi-user.target
/usr/sbin/auto-gateway:
#!/bin/bash while true; do if route | grep "default"; then start some services (if not running) else stop some services (if running) fi sleep 30 done >/dev/null
Я нахожу, что это плохая замена к новомодной версии. Мне не нравятся фиксированный таймер и трудно кодирование вторичных сервисов в автошлюз.
Есть ли какой-либо путь systemd, может контролировать netdev вместо этого?
Спасибо