shell Kommando ausführen { } (e-mail)

1,855 views
Skip to first unread message

broadway

unread,
Dec 18, 2012, 9:21:33 AM12/18/12
to fhem-...@googlegroups.com
Hallo,

ich habe FHEM auf einer Linksys NSLU2 unter debian installiert.
Von der Konsole kann ich erfolgreich mails verschicken mit dem Befehl: 
sendEmail -f i...@gmail.com -t empfa...@xy.de -u Betreff Test -m "Test Nachricht" -s smtp.gmail.com -o tls=yes -xu username -xp password

Nun habe ich in FHEM ein notify wie folgt erstellt:
define emil notify emil { sendEmail -f i...@gmail.com -t empfa...@xy.de -u Betreff Test -m "Test Nachricht" -s smtp.gmail.com -o tls=yes -xu username -xp password}

Leider funktioniert es nicht, im Log-File steht nach "trigger emil":
emil return value: syntax error at (eval 63) line 1, near "sendEmail -f "

Hoffentlich hat jemand eine Lösung! 

Tom

unread,
Dec 18, 2012, 9:25:02 AM12/18/12
to fhem-...@googlegroups.com
Verdopplung des @?


--
To unsubscribe from this group, send email to
fhem-users+...@googlegroups.com

broadway

unread,
Dec 18, 2012, 9:32:27 AM12/18/12
to fhem-...@googlegroups.com

Am Dienstag, 18. Dezember 2012 15:25:02 UTC+1 schrieb Borsti67:
Verdopplung des @?

Danke für die schnelle Antwort. Aber leider nein, Ergebnis:

2012.12.18 15:31:04 3: emil return value: syntax error at (eval 64) line 1, near "sendEmail -f "
Global symbol "@gmail" requires explicit package name at (eval 64) line 1. 

Martin Thomas Schrott

unread,
Dec 18, 2012, 9:34:23 AM12/18/12
to fhem-...@googlegroups.com
Hi,

hab jetzt nur überflogen, aber sollte es nicht ich\@gmail.com lauten? (laut perl)
lG
Martin

Martin Thomas Schrott

unread,
Dec 18, 2012, 9:53:11 AM12/18/12
to fhem-...@googlegroups.com
Hallo nochmal,

ah, nein du versuchst einen Shell aufruf zu machen!
nicht {} sondern "" verwenden! ;-)
Sonst machst du einen Perl aufruf (laut command ref) und dort gibt es deine Befehle nicht!
lG
Martin

Stefan

unread,
Dec 18, 2012, 10:07:09 AM12/18/12
to fhem-...@googlegroups.com, li...@mtsonline.at
Hi broadway,

ähnliche Probleme hatte ich auch mit sendemail.
Mit hat das Wiki echt gut geholfen: http://www.fhemwiki.de/wiki/E-Mail_senden
Unter Raspberry Pi findest Du die Lösung.
Ich habe das ganz dann noch erweitert, so das ggfl. noch Anhänge in Form von JPGs
von der Webcam mit versendet werden oder einfach nur ne Mail wenn ein definierter Zustand
erreicht ist....

Gruß
Stefan

broadway

unread,
Dec 18, 2012, 2:09:46 PM12/18/12
to fhem-...@googlegroups.com, li...@mtsonline.at
@Stefan: Ja, das Beispiel habe ich gesehen. Bevor ich eine Prozedur einbinde, sollte aber erstmal der statische send-Befehl funktionieren. Warum ist der Befehl dort noch mit qx() eingepackt?

@Martin: Mit "" kommt schonmal das shell Kommando an, danke. Jetzt bekomme ich als Meldung im Log:
sh: sendEmail: not found
obwohl der gleiche Befehl bei Eingabe auf der Konsole funktioniert. Habe @ durch \@ ersetzt, hat auch nicht geklappt.

Stefan

unread,
Dec 18, 2012, 4:32:32 PM12/18/12
to fhem-...@googlegroups.com
Hi,

Das qx steht für quoted executable. Die darin eingeschlossene Zeichenkette wird von Perl einfach in einen Kommandozeilenaufruf umgesetzt.
Ich fuchse mich auch erst seit ein paar Wochen in Perl rein, und lerne durch try & error aber das wird schon. :)
Gerade bei einfachen Dingen wie diesen ist der lernerfolg ziemlich groß!
Nur damit ich es auch verstehe: Warum willst Du den Statischen Sendemail Befehl zum laufen bekommen.
Über die Variante aus dem Wiki ist es meines Erachtens viel einfacher und es läuft! ;)

Gruss
Stefan

Reinerlein

unread,
Dec 19, 2012, 8:27:21 AM12/19/12
to fhem-...@googlegroups.com, li...@mtsonline.at
Meiner Meinung nach musst du den kompletten Pfad (am Besten Absolut) zu dem Skript angeben.
Ich glaube, dass die Pfade der Path-Variablen nicht durchsucht werden...

Grüße Reinerlein

broadway

unread,
Dec 19, 2012, 8:52:35 AM12/19/12
to fhem-...@googlegroups.com, li...@mtsonline.at
Am Dienstag, 18. Dezember 2012 22:32:32 UTC+1 schrieb Stefan:
Nur damit ich es auch verstehe: Warum willst Du den Statischen Sendemail Befehl zum laufen bekommen. 
Über die Variante aus dem Wiki ist es meines Erachtens viel einfacher und es läuft! ;)

Es sah mir zunächst zu kompliziert aus, aber es war ja ganz einfach einzubinden. Es klappt! Beim direkten Befehl machen die ganzen Sonderzeichen Probleme.


Am Mittwoch, 19. Dezember 2012 14:27:21 UTC+1 schrieb Reinerlein:
Meiner Meinung nach musst du den kompletten Pfad (am Besten Absolut) zu dem Skript angeben.
Ich glaube, dass die Pfade der Path-Variablen nicht durchsucht werden...

Du hattest Recht! Tausend Dank, es funktioniert einwandfrei. Der Befehl in der Prozedur muss lauten:

$ret .= qx(/usr/local/bin/sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=yes); 

 
Reply all
Reply to author
Forward
0 new messages