[fli4l] Wo liegt d?==?utf-8?Q?ie Information, welche Ger?==?utf-8?Q?äte mit fli4l verbunden sind?==?utf-8?Q??
K. Dreier
usenetforum at gmx.net
Sa Jan 14 12:07:01 CET 2017
Hallo Peter,
cool! Danke, habe aber noch Fragen, siehe unten.
> wenn im Paket httpd HTTPD_ARPING='yes' gesetzt ist, findest Du
> unter
> /var/run/arping.stat/
> für jeden Host der erreich werden kann und nich via
> HTTPD_ARPING_IGNORE_x='hostname'
> ausgeschlossen wurde eine Datei "<hostname>.online"
Bestätigt. Ich sehe dort z.B. "geraet1.online".
> > Da wo es dir im Webgui auch angezeigt wird ;-)
> > Bei mir ist das unter /var/lib/persistent/dhcp im File
> > dnsmasq.leases
>
> in den leases kann was stehen was schon nicht mehr im Netz da ist
> ;)
Und genau das wäre für meine Zwecke ein Problem. Das Skript muß
anspringen bzw reagieren in dem Moment, in dem das Gerät nicht mehr
verbunden ist (1-2 Minuten Verzögerung wären natürlich nicht das
Problem; 10 Min oder gar mehr aber schon).
> >> Wenn jemand noch beschreiben würde, wie ein solches Skript
> aussehen
> >> könnte, wäre ich sehr happy! :)
>
> hier mal etwas grobes dazu - was fehlt ist, das die Aktion jeweils
> nur ein
> mal ausgeführt wird.
> ---
> #! /bin/sh
> while true
> do
> if [ -f /var/run/arping.stat/<hostname>.online
> then
> ...aktion wenn host im netz erreichbar ist
> else
> ...aktion wenn host nicht mehr online oist
> fi
> sleep 30
> done
> ---
Ok. Fehlt da nicht irgendwo ein "]"? Damit das nur 1x ausgeführt wird,
müßte man eine Variable nach der Ausführung setzen, welche vor der
nächsten Runde geprüft wird.
Ich sehe hier mehrere nötige Schritte:
1) Man muß am Anfang prüfen, ob ein bestimmtes Geräte "online" ist.
Das haben wir, siehe oben.
2) Wenn dieses (oder mehrere! wie prüft man das? Es wäre sozusagen OR)
Geräte online sind, muß die Aktion erfolgen, falls nicht, sollte eine
Schlaufe laufen, die 1 wieder aufruft
3) Falls eines oder mehrere Geräte online sind, muß die Aktion "ein"
erfolgen, also das Anschalten der Steckdose (wie auch immer DAS dann
genau funkionert; neue Baustelle)
4) sobald Komando in 3 ausgeführt ist, muß eine Variable gesetzt
werden, z.B. WLANDOSEAKTIV=1
5) es muß dann einen Interval geben, in dem der Zustand von 1
überprüft wird, also z.B. sleep 120 (= 2 Min)
6) Falls nach diesem Interval 1 zutrifft, landet man wieder bei 5, da 4
weiter aktiv/gesetzt bleibt
7) Falls nach diesem Interval 1 nicht zutrifft, muß die Aktion "aus"
erfolgen, also das Ausschalten der Steckdose
8 ) Falls 7 ausgeführt wurde, muß die obige Variable geändert werden,
also z.B. WLANDOSEAKTIV=0
9) Das Skript muß nun wiederum in bestimmten Abstand prüfen, ob
eventuell 1 wieder zutrifft
Übersehe ich etwas? Könnte jemand/du Peter, diese Logik im Skript
umsetzen? :) DOS-Skripte könnte ich handeln, habe auch mit Tasker mit
GOTO usw. keine Probleme, aber Unix bash/sh...
Danke! Bin mir sicher, daß dies irgendwann mal jemand anderem ebenfalls
helfen wird.
Gruß
Klaus
Mehr Informationen über die Mailingliste Fli4L