[fli4l] Hilfe für Skript-Logik

Thomas Grunenberg tho_gru at gmx.de
Mi Feb 22 13:50:47 CET 2017


Am 22.02.2017 um 11:29 schrieb K. Dreier:
> Hallo Thomas,
>
> zunächst danke für Dein ausführliches und hilfreiches Feedback!
>
...
> Wie wäre es damit (gehe "positiv"):
>
> if [ $exists -gt 0 ] ; then # only ping successful; this is sufficient =
> no further check required to set status to "true"
> 	device1_online="true"
> elif [ $exists = 0 ] && [ ! -f /var/run/arping.stat/${device1}.online ]
> ; then # ping unsuccessful AND no arping.stat file exists for device1;
> only then set status to "false"
> 	device1_online="false"
> elif [ $exists = 0 ] && [ -f /var/run/arping.stat/${device1}.online ] ;
> then # ping unsuccessful BUT arping.stat file (still) exists, then check
> for current status of device and set (new) status accordingly
> 	if [ $device1_online = "true" ] ; then # current status of device is
> on, leave on; will eventually turn off when file disappears, which is
> ok
> 	device1_online="true"
> 	else # device1 is currently set to "false" = offline
> 	device1_online="false" # status is off; arping.stat file could be
> merely residual, therefore leave off = "false"
> 	fi
> fi
>
> Damit habe ich doch nun alle denkbaren Varianten abgedeckt und keine
> "unset"-Situation bliebe übrig, womit ein pures "else" überflüssig
> wäre, oder?
So viel Code mit IF die Hintereinander aufgerufen werden. Wie willst Du 
das in ein paar Wochen verstehen oder gar warten? Das sieht sehr 
kompliziert aus, so kompliziert, dass ich gar nicht verstehen kann, ob 
es richtig ist.
>
...
>
>> Wenn wie in Deinem Fall ein Test zu wackelig/sensible ist, kannst Du
>> ihn
>> mehrfach ausführen und eine Mehrheit bilden. Damit eliminierst Du
>> Ausreißer auf Kosten der Laufzeit...
...
>
> Das werde ich mir mal anschauen, sobald ich so (siehe oben) nicht weiter
> komme. Mein Ping-check erfolgt alle 15 Sekunden, das sollte also
> _eigentlich_ solche eine "Redundanz" überflüssig machen. Aber wer
> weiß...

Nehmen wir einmal an, es gibt einen Signal (in Deinem Fall das Device, 
welches On- oder Offline ist) das zwei Zustände hat: 0 oder 1. Das 
"Problem" bei diesem Signal ist, das es jede 30 Sekunden für eine halbe 
Sekunde invertiert wird. Was nutzt es Dir, in so einer Situation alle 15 
Sekunden zu schauen welchen Wert Du bekommst? Du weißt ja nie, ob Du 
genau in einer von den vielen halben Sekunden "misst", in der das Signal 
invertiert ist. Deswegen solltest Du bei so einem Signal Deine Messung 
sinnvoll ausweiten, z.B.: In einem Messzeitraum von 5 Sekunden haben ich 
10 Messungen durchgeführt, bei denen 9 eine 1 ergeben und eine Messung 
eine 0 ergeben haben. Deswegen sage ich: "Meine Messung hat 1 ergeben"

>
> Gruß
> Klaus
>
Gruß
Thomas


Mehr Informationen über die Mailingliste Fli4L