Bash Skript von FHEM auslösen...

Begonnen von KFK-mpg, 08 November 2013, 21:55:45

Vorheriges Thema - Nächstes Thema

KFK-mpg

Hi,
leider muss ich doch noch einmal eine Frage in die Runde werfen, worüber ich schon ein wenig Brüte.
Ich versuche aktuell von einem Home Matic Tür Kontakt ein Bash Skript starten, welches mir eine E-Mail sendet.
Klar gibt es dafür in FHEM schon vorgesehen Funktionen, ich muss jedoch einen UMTS-Router überbrücken, der ab und zu kein Internet hat.
Das heißt er muss dann automatisch neu gestartet werden. Daher das Bash Skript.

Ich habe natürlich einiges schon probiert, bin bisher jedoch nicht auf einen grünen Zweig gekommen.
Das Bash-Skript welches ausgeführt werden soll(das Skript im Terminal etc. funktioniert:

################################################################
#!/bin/bash
echo "run cmd at $(date)" >> /opt/fhem/FHEM/restart.log
count=0
while [ "$(/bin/ping -c 1 www.google.de | grep '64 bytes' | cut -b 1-2)" != "64" ]
do
       if [ $count -eq 0 ] || [ $count -eq 5 ]; then
              echo "Restart router $(date)" >>  /opt/fhem/FHEM/restart.log
               /usr/bin/curl "http://easy.box/cgi-bin/login.exe" --anyauth --user-agent "Mozilla/4.0" -d user=loginname -d pws=password > /opt/fhem/FHEM/routerhtml.log
               /usr/bin/curl "http://easy.box/cgi-bin/restart.exe" >> /opt/fhem/FHEM/routerhtml.log
               count=1
       fi

sleep 120
((count++))
echo $count >> /opt/fhem/FHEM/restart.log
done
mutt -s "Betreff" max.mustermann@mailde < "Hallo" >> /opt/fhem/FHEM/restart.log
#################################################################


fhem.cfg sieht wie folgt aus:
#################################################################
define TuerNotify notify CUL_HM_HM_SEC_SC:open { system("sudo /opt/fhem/FHEM/test.sh") }
#################################################################

FHEM löst auch bei offenem Türkontakt aus, jedoch kriege ich in das Log entweder Permissions denied (war bisher immer wenn ich das Skript im User-ordner abgelegt hatte)
oder wie aktuell hier: TuerNotify return value: -1

Was mache ich hier Grundsätzlich Falsch?
Hoffe ihr könnt mir helfen. (sry das ich den Code nicht in einen Code-Block schreiben konnte, ging irgendwie nicht über Midori)

Meine Hardware ist ein Raspberry Pi Model B, COC-Modul und FHEM in der Version 5.5

Viele Grüße
Daniel

Jaydee

#1
versuch mal auf der Shell
sudo chmod a+x /opt/fhem/FHEM/test.sh
um dein skript von jedem ausführbar zu machen und lass dann das sudo im Aufruf weg.

EDIT: das -1 bekomme ich auch immer bei meinen Bash-Skripten, aber ausgeführt werden sie trotzdem korrekt.

KFK-mpg

Hi,
das hätte ich vll noch erwähnen sollen. Ausführungsrechte wurden für jeden gegeben. Habs auch nochmal mit deiner Zeile probiert um sicher zu gehen, jedoch bekomme ich auch immer noch den Return Code -1.

Noch weitere Ideen?

Viele Grüße
Daniel

Jaydee

wie gesagt, das -1 heißt bei mir gar nichts, das bekomm ich auch immer, obwohl alles wie gewünscht läuft...

Das Skript läuft problemlos, wenn du es selbst von der Shell aus startest?

Jaydee

und du hast auch die Schreibrechte für dein  /opt/fhem/FHEM/restart.log eingeräumt?

KFK-mpg

Hi,
Jup, die Rechte wurden gesetzt.
Ich habe nochmal rumprobiert und mir mal einen Ordner im /Tmp/ erzeugen lassen. Das funktionierte soweit. Hat es vll etwas mit den Ausführungsrechten des fhem-Users zu tun? Scheinbar liegt es ja daran, dass fhem kein mutt aufrufen kann. Kann ich die irgendwie ändern?

Viele Grüße

duke-f

Gab's hier keine Lösung? Ich stehe haargenau vor dem gleichen Problem.
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

Wernieman

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

duke-f

Haargenau wie beschrieben: Raspberry Pi.

Aber es läuft jetzt. Welches jetzt der maßgebende Faktor war, weiss ich nicht, aber ich habe:
1. Die Leserechte für alle ergänzt, bisher hatte ich gedacht, die Ausführungsrechte reichen aus.
2. Das Script kopiert in /usr/local/bin und dort aufgerufen.

Jetzt kommt die Mail auch an.
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

Wernieman

Wenn ein Script/Programm ausgeführt werden soll, muß es vorher "gelesen" werden.

Deshalb brauchst Du immer die rx-Rechte, wenn es laufen soll.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

duke-f

Danke, war mir so nicht bewusst. Dachte irgendwie, ich könnte ein Skript ausführbar machen, ohne dass jeman "reingucken" kann.
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

Wernieman

Naja ... Unix ist Multiuserfähig, d.h. auch "System" ist ein User. Wenn keiner reingucken kann, dann kann KEINER reingucken (Ausnahme: root, deshalb soll man den ja zu arbeiten auch nicht verwenden)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

duke-f

Das ist schon richtig. Hab' nur bis jetzt den Standpunkt, dass ich wirklich der einzige auf meinem Raspi bin und mir immer wieder an besonderen Punkten eine Sicherung mache. Aber vielleicht sollte ich doch mal "umsteigen".
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

Wernieman

#13
Mein Standpunkt:
Auch wenn man "alleine" auf einem System ist, gibt es meistens mehrere "Prozesse", welche man laufen lässt. Deshalb bin ich ein großer Freund von "1 Server-Prozess = 1 User"

Wenn es jemand schafft, diesen Prozess zu übernehmen, ist er noch nicht automatisch auf dem System. Er muss sich noch eine Sicherheitslücke suchen, um sich mehr Rechte zu verschaffen.

Da aktuell in den entsprechenden Kreisen diskutiert wird, wie man Device wie Kühlschänke etc. zu übernehmen sind, ist diese Diskussion nicht ganz zu vernachlässigen. Wer will schon "jemand anderes" in seinem Privaten Netz haben?

P.S. Firewall ist dagegen nie das "Allheilmittel"?

Edit: Missverständliche Typo
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

duke-f

Ich stimme Dir vollkommen zu - und werde das auch mal über kurz oder lang so umsetzten.
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite