FHEM Forum

FHEM - Hardware => FRITZ!Box => Thema gestartet von: Rantanplan am 29 Januar 2014, 17:11:33

Titel: FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Rantanplan am 29 Januar 2014, 17:11:33
Moin,
folgendes Problem: ich will durch die INFO-LED der Fritzbox 3370 wissen, ob fhem läuft.
Realisierbar über den CRON Dienst in Freetz der alle Stunde ein Shellscript ausführt.
folgende Befehle habe ich:
ps |grep -v grep| grep "fhem";
fhem status


folgender Befehl lässt die INFO LED angehen:
led-ctrl update_led1

leider habe ich gar keine Ahnung von BashScripten:
#!/bin/bash
my $check='ps |grep -v grep| grep "fhem"'; # ergibt 15316 root     15456 S   /[PATH]/fhem /[PATH]/fhem.pl /[PATH]/fhem.cfg
if  [fhem status == 'running' && $check>1] # status ist "running" und es existiert ein Prozess der fhem entspricht
led-ctrl update_led1;   
exit 0;
  else
   fhem start;
   exit 0;
   fi


Anders Herum wäre es auch nicht schlecht; hat sich der fhemdienst aufgehängt, lasse die  INFO LED ROT BLINKEN:
led-ctrl filesystem_mount_failure
geht das? kann man bei einem Prozess sehen, ob er sich aufgehangen hat?
Danke!!! ::)
Titel: Antw:FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Wernieman am 29 Januar 2014, 21:23:14
1. Trick
wenn Du verwendest: "grep [f]em" brauchst Du den grep-Befehl selber nicht auszublenden

2. Trick
Du kannst den Befehl direkt in das if setzen
if `ps a | grep -q [f]em` then
dann trifft das if nur zu, wenn "grep" erfolgreich war

3. Trick, nur ausführen wenn der Prozess existiert, einfach mal Telnet ausprobieren
if `echo -en "passwort\nversion\nquit\n" | nc localhost 7072` then

wenn eines von beiden fehlschlägt, dann Status-Led=Offline

Weiß jetzt nicht, ob es bei der Fritzbox noch eifnacher geht, aber auf einem Linux-Server würde ich es so machen. Bitte jetzt nur noch die Tricks anpassen und zusammenführen.
Titel: Antw:FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Rantanplan am 30 Januar 2014, 02:00:47
Dankööööö,
CRONJob
*/10 *    * * *   /var/media/ftp/Sticky8it/tools/fhem/check.sh > /dev/null 2>&1

aber:

Weiss jemand meinen Code zu verbessern, denke das geht auch schöner; zB anstelle "echo | nc localhost 7072" die Alternative "fhem status == "running"" nehmen?

#!/bin/bash
if ps|grep -v grep|grep "fhem" && echo | nc localhost 7072
then
led-ctrl update_led1
exit 0
else                                                                                         
led-ctrl filesystem_mount_failure
perl /var/media/ftp/Sticky8it/tools/fhem/fhem.pl /var/media/ftp/Sticky8it/tools/fhem/fhem.cfg
exit 0
fi
Titel: Antw:FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Wernieman am 30 Januar 2014, 07:45:04
1. NEIN, wenn Du ein grep [f]em machst, wird eben durch den "Trick" der "[]" die grep-Instant NICHT aufgelöst! Siehe meine Erklärung!
Ist übrigens ein superalter Unix-Trick

#!/bin/bash
if ps a | grep [f]hem && echo | nc localhost 7072
then
     led-ctrl update_led1
else                                                                                         
    led-ctrl filesystem_mount_failure
fi


ich würde mit diesem Script nicht fhem automatisch starten. Ein guter Watchdog ist es eben nicht ....

Ist es Absicht, das Du per nc zwar die Erreichbarkeit, aber nicht die Funktionsfähigkeit von fhem testest?
Titel: Antw:FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Rantanplan am 30 Januar 2014, 12:26:19
Kommt man mit einem "ps l" oder "ps w" ans selbe Ziel?
root:ps: invalid option -- a
BusyBox v1.20.2 (2012-10-12 16:13:27 CEST) multi-call binary.
Usage: ps
Show list of processes
        w       Wide output
        l       Long output
&
root:echo -en "passwort\nversion\nquit\n" | nc localhost 7072
Unknown command passwort, try help.

Daher mein gekürzter Code; läuft auf einer FB3370, Freetz &TBFlex und einem ungesicherten fhem.

Danke für die Hilfe- Läuft! 8)

Hier mal der Output der FB mit deinem,abgeänderten (ps -l) Script:
root:/var/media/ftp/Sticky8it/tools/fhem# sh check.sh
S     0 14288     1 15148 13244 0:0   02:51 00:01:11 /var/media/ftp/Sticky8it/tools/fhem/fhem /var/media/ftp/Sticky8it
S     0 22797 22795  1152   300 pts0  12:34 00:00:00 {busybox} grep fhem
SecurityCheck:

WEB,WEBphone,WEBtablet has no basicAuth attribute.
telnetPort has no password/globalpassword attribute.
Running with root privileges.
Restart fhem for a new check if the problem is fixed,
or set the global attribute motd to none to supress this message.
Titel: Antw:FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Rantanplan am 30 Januar 2014, 12:42:27
Zitat von: Wernieman am 30 Januar 2014, 07:45:04

  • ich würde mit diesem Script nicht fhem automatisch starten. Ein guter Watchdog ist es eben nicht ....
  • Ist es Absicht, das Du per nc zwar die Erreichbarkeit, aber nicht die Funktionsfähigkeit von fhem testest?

Titel: Antw:FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Wernieman am 30 Januar 2014, 12:59:21
Dürfte daran liegen: "passwort\n"
Wenn Du kein passwort verwendet hast, bitte rauslöschen

Wie ich in meinem ersten Beitrag geschrieben habe:
Bitte jetzt nur noch die Tricks anpassen und zusammenführen.

*griiins*

Edit:
Wegen Watchdog:
Wenn jetzt FHEM beim starten abstürzt, wird es von Deinem watchdog immer wieder gestartet .... kann Dir also (vereinfacht gesagt) mittelfristig das System "zerschießen". Grundsätzlich ist die Idee richtig, man sollte nur für die verschiedenen Fälle eine Zusatzlogig einbauen. Einen Fall habe ich Dir gerade genannt ..... da bisher bei mir fhem sauber lief, solange der Fehler nicht vor dem Bildschirm saß, lasse ich es lieber mit einer Überwachung ....
Titel: Antw:FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Rantanplan am 30 Januar 2014, 13:40:47
interessanter Weise ist der Output bei echo -en "\nversion\nquit\n" inkl. der MotD, lasse ich den Zeilenumsprung weg, werden auch nur noch die aktiven Module angezeigt.

dein Trick, die grep Instanz nicht mit aufzullösen, funktioniert in meinem System einfach nicht.... ich muss bei ps |grep -v grep| grep "fhem"; bleiben.

wie wäre es so: fhem hängt-> INFO blinkt rot->Termination des alten und Neustart des FHEM Dienstes.-> INFO blinkt weiterhin rot, Usereingabe setzt den Watchdog zurück.
Somit wäre sogar die LED wieder frei, da Sinn und zweck des WD nur darin bestünde, Alarm zu schlagen, sollte sich der FHEM mal aufgehangen haben.
so läuft es jetzt bei mir:
check.sh#!/bin/bash
if ps |grep -v grep| grep "fhem" && echo -en "version\nquit\n" | nc localhost 7072
then
     led-ctrl update_led1 #INFO LED leuchtet
else                                                                                         
    led-ctrl filesystem_mount_failure #INFO LED blinkt Rot
fi

&
crond
*/10  * * * *  sh /var/media/ftp/Sticky8it/tools/fhem/check.sh #alle 10 min wird check.sh ausgeführt


bringt mir ps |grep -v grep| grep "fhem">/dev/null 2>&1 && echo -en "version\nquit\n" | nc localhost 7072 >/dev/null 2>&1 irgendeinen Vorteil?
Titel: Antw:FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Wernieman am 30 Januar 2014, 13:43:26
Da ich keine FritzBox habe, kann ich Dir dazu nichts sagen.....

ein "grep [f]hem" funktioniert wirklich nicht???? Es währe das erste Unix (Linux), wo ich so etwas gesehen hätte .....

Man beachte die "[", welche nur das "f" umranden
Titel: Antw:FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Rantanplan am 30 Januar 2014, 13:51:59
Zitat von: Wernieman am 30 Januar 2014, 13:43:26
Da ich keine FritzBox habe, kann ich Dir dazu nichts sagen.....

ein "grep [f]hem" funktioniert wirklich nicht???? Es währe das erste Unix (Linux), wo ich so etwas gesehen hätte .....

Man beachte die "[", welche nur das "f" umranden

OKOK, ich tippe es für dich mal manuell ein ;)
ps|grep [f]hem
14288 root     15148 S    /var/media/ftp/Sticky8it/tools/fhem/fhem /var/media/ftp/Sticky8it/tools/fhem/fhem.pl /var/me
26566 root      1152 S    {busybox} grep fhem
Titel: Antw:FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Wernieman am 30 Januar 2014, 14:03:37
O.K. scheinbar kapselt die Fritzbox doppelt ..deshalb funktioniert der "Trick" nicht

man beachte: "{busybox}"
Titel: Antw:FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Puschel74 am 30 Januar 2014, 14:22:24
Hallo,

ZitatEs währe das erste Unix (Linux), wo ich so etwas gesehen hätte ....
Eine FritzBox hat auch kein richtiges Linux - eine sudo apt-get update funktioniert dort daher auch nicht.

Grüsse
Titel: Antw:FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Wernieman am 30 Januar 2014, 14:41:19
<Klugscheißermodus>
Auf meinem gentoo-System (Linux!) funktioniert ein apt-get auch nicht, das ist debian-spezifisch
</Klugscheißermodus>
Titel: Antw:FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Rantanplan am 30 Januar 2014, 15:16:24
mal wieder zurück zum Thema;
habe ich ein crontab
*/10  * * * *  sh /var/media/ftp/Sticky8it/tools/fhem/check.sh
könnte ich dann auch dem script sagen, dass es sich bei erfolgreichem fhem feststellen, seine Zeit auf 20min einstellen usw. bis es dann nurnoch stündlich läuft und am Anfang dann alle 10sec?
Ich weiss, dass ich mit AWK oder SED arbeiten muss, aber ich habe garkein Ahnung. C&P (http://www.telefon-treff.de/showthread/t-288521.html)

$Time[10sec...1h]
crontab -l >/tmp/mycrontab
awk '!/check.sh/{print $0} /check.sh/{print "$Time"$0}' /tmp/mycrontab /tmp/mycrontab.fin
crontab /tmp/mycrontab.fin
Titel: Antw:FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Wernieman am 30 Januar 2014, 15:18:20
Per crontab kannst Du eigentlich nur feste Zeiten erledigen. Wenn Du Variable sein willst, mußt Du Dir einen eigenen Deamon schreiben ....
Titel: Antw:FritzBox INFO LED zeigt FHEM Status an
Beitrag von: Puschel74 am 30 Januar 2014, 15:43:00
Hallo,

Zitatdas ist debian-spezifisch
Ah ok.
Ich lern ja auch gerne noch dazu  ;D

Grüsse