über das kleine Projekt mit dem ich mit einem Relais 12 V und damit den Router von einem PC aus schalte, gibt es ja schon einen Thread: viewtopic.php?f=13&t=167661&start=15
Nun habe ich eine kleine systemd Unit geschrieben, die
- mit dem Relais den Router einschaltet
- eine typische Zeit wartet, die der Router zum Starten und Herstellen der Verbindung benötigt
- in einer Schleife immer wieder überprüft ob eine Internetverbindung besteht
- beesteht keine Internetverbindung (mehr) oder wird eine maximale Verbindungszeit überschritten (nach 24h verhalten sich Router/Internetverbindung meistens merkwürdig) wird der Router wieder ausgeschaltet und das Skript beendet
Es sieht so aus, einmal die systemd Unit
Code: Alles auswählen
[Unit]
Description=switch router and monitor internet connection
After=netfilter-persistent.service
Requires=netfilter-persistent.service
BindsTo=netfilter-persistent.service
[Service]
Type=simple
ExecStart=/usr/local/bin/switchrouter
Restart=always
RestartSec=30s
[Install]
WantedBy=network.target
40335
Interessieren würden mich nun erstens allgemeine Verbesserungsvorschläge, die das ganze robuster und übersichtlicher machen (bin ich mir sicher, dass ich aus Unwissen alle möglichen Konventionen gebrochen habe).
Allgemeine Hinweise würden mir außerdem besonders weiterhelfen, weil ich noch eine ganz ähnliche Unit schreiben will, die sich um einen dynDNS-ähnlichen Dienst kümmern soll
Zweitens geht es um einige weitere Funktionen, die ganz nett wären, an denen ich aber gescheitert bin:
Allen voran wollte ich die Unit mittels
Code: Alles auswählen
Type=notify
Die Meldungen, die ich mit meiner Logfunktion mit systemd-cat ausgeben erscheinen zwar im journal, aber nicht, wenn ich gezielt die Meldungen der unit anzeigen lasse
Code: Alles auswählen
# journalctl -p7 -u switchrouter.service
-- Logs begin at Sun 2018-05-06 23:46:59 CEST, end at Mon 2018-05-07 22:38:21 CEST. --
May 06 23:47:00 host systemd[1]: Started connect router to power and reset if necessary.
Code: Alles auswählen
# journalctl -p7 | grep switchrouter
May 06 23:47:00 host switchrouter[481]: Switched on router.
May 06 23:49:24 host switchrouter[580]: Internet connection ok (0 fails).
May 07 00:06:04 host switchrouter[594]: Internet connection ok (0 fails).
May 07 00:22:45 host switchrouter[601]: Internet connection ok (0 fails).
...
Beim Handling von SIGTERM und SIGKILL bin ich mir auch alles andere als sicher (Zeile 39-46)....
Etwas was ich noch machen will und wobei ich hoffentlich ohne Hilfe auskomme, ist eine udev-Regel, die für etwas weniger Verwechslungsgefahr bei der Gerätedatei für das Relais sorgt und die Unit von einem unprivilegierten Benutzer ausführen zu lassen.
lg smutbert