FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: tobelix am 28 Oktober 2017, 10:33:45

Titel: [Gelöst]FHEM Befehl über SSH/Shell schicken
Beitrag von: tobelix am 28 Oktober 2017, 10:33:45
Hallo zusammen,
ich habe FHEM auf einem Raspberry laufen. Auf diesem logge ich mich per SSH ein und möchte folgenden FHEM Befehl über die Shell abschicken.

perl fhem.pl localhost:7072 "set Bewegungsalarm 1"

Bewegungsalarm ist ein Dummy Device. Wenn ich set Bewegungsalarm 1 über das Eingabefeld des Webinterfaces eingeben, dann wird der Befehl ausgeführt. Wenn ich ihn über die Shell schicken, dann steht im FHEM Log folgender Eintrag:

2017.10.28 00:04:59 4: Connection accepted from telnetPort_127.0.0.1_60071

Es scheint als erreiche ich den FHEM Server, aber aus irgendeinem Grund wird mein Befehl ignoriert. Fehlt mir irgendeine Konfiguration am FHEM?

Wäre super wenn jemand einen Tipp für mich hätte, ich finde den Fehler einfach nicht.

Danke!
Titel: Antw:FHEM Befehl über SSH/Shell schicken
Beitrag von: kaputt am 28 Oktober 2017, 10:41:50
wie wärs mitperl /opt/fhem/fhem.pl localhost:7072 "set Bewegungsalarm 1"
Titel: Antw:FHEM Befehl über SSH/Shell schicken
Beitrag von: tobelix am 28 Oktober 2017, 11:06:53
Selbes Ergebnis:
2017.10.28 11:03:37 4: Connection accepted from telnetPort_127.0.0.1_33039

Aber der Wert hat sich nicht geändert sprich der Befehl wurde nicht ausgeführt.

Ich bin beim oben genannten Beispiel auch vorher in den Ordner /opt/fhem navigiert, damit er die fhem.pl findet.

Grüße,
Tobelix
Titel: Antw:FHEM Befehl über SSH/Shell schicken
Beitrag von: CoolTux am 28 Oktober 2017, 12:20:19
gib mal bitte ein list vom dummy Bewegungsalarm und ein list vom telnet Device
Titel: Antw:FHEM Befehl über SSH/Shell schicken
Beitrag von: Klaus0815 am 28 Oktober 2017, 12:36:42
Installier Dir ncat, dann

echo 'set Licht_Buero off' | nc 127.0.0.1 7072  2>/dev/null
Titel: Antw:FHEM Befehl über SSH/Shell schicken
Beitrag von: tobelix am 28 Oktober 2017, 14:16:21
Hier die beiden Lists:

Internals:
   CFGFN
   NAME       Bewegungsalarm
   NR         1530
   STATE      0
   TYPE       dummy
   READINGS:
     2017-10-27 23:35:03   state           0
Attributes:
   verbose    5


Internals:
   CONNECTS   173
   DEF        7072 global
   FD         6
   NAME       telnetPort
   NR         18
   NTFY_ORDER 50-telnetPort
   PORT       7072
   STATE      Initialized
   TYPE       telnet
Attributes:
Titel: Antw:FHEM Befehl über SSH/Shell schicken
Beitrag von: ernst1024 am 28 Oktober 2017, 15:54:07
Bei mir funktioniert (über Putty)
perl /opt/fhem/fhem.pl 7072 "setreading myW_Bonn temp_c  14"

also im Prinzip ohne das localhost
Titel: Antw:FHEM Befehl über SSH/Shell schicken
Beitrag von: tobelix am 28 Oktober 2017, 16:29:00
Hi Ernst, danke fürs testen.
funktioniert bei mir leider auch nicht. selbes Ergebnis. Ich benutze übrigens auch putty.

Wie sehen eure telnet Devices aus? Habt ihr irgendeine Einstellung, die bei mir fehlt? Das seltsame ist ja, dass laut Logfile die Verbindung akzeptiert wird, aber der Befehl nicht ausgeführt wird. Muss ich irgendwo noch in der FHEM Konfig Befehle über telnet explizit erlauben? Ich habe in der commandref leider nicht gefunden.
Titel: Antw:FHEM Befehl über SSH/Shell schicken
Beitrag von: ernst1024 am 28 Oktober 2017, 16:35:34
Aus meiner fhem.cfg

define telnetPort telnet 7072 global
attr telnetPort room system
define allowed_telnetPort allowed
attr allowed_telnetPort room system
attr allowed_telnetPort validFor telnetPort


Kannst j mal vergleichen obwohl das wohl die Standard Einstellung ist, jedenfalls habe ich da nix geändert
Titel: Antw:FHEM Befehl über SSH/Shell schicken
Beitrag von: kroman am 28 Oktober 2017, 16:47:13
Vielleicht mit Passwort?


echo -e "passwort\n\nset Bewegungsalarm 1\nexit" | nc localhost 7072
Titel: Antw:FHEM Befehl über SSH/Shell schicken
Beitrag von: tobelix am 28 Oktober 2017, 17:07:18
Oh man... ich hab den Fehler gefunden.
Mir hat das Perl modul Net::Telnet gefehlt.
Die Fehlermeldung wurde mir eben erst angezeigt, nachdem ich in der fhem.cfg mal das telnet Passwort auskommentiert habe, da Ernst das in seinem Device scheinbar nicht drin hat?

Hab das Modul schnell über  apt-get install libnet-telnet-perl installiert und schon funktionieren die Befehle.

Danke für eure Hilfe!


Eine kurze Frage hab ich noch. Ich hab jetzt das telnet Passwort auskommentiert. Wenn ich nur von Localhost aus die Befehle ausführe, dann mcaht es auch nicht viel Sinn oder? Weiß jemand aus dem Stehgreif wie die Syntax aussehen muss, wenn ich mit Passwort den Befehl ausführen will?

@kroman: Bei deiner Variante bekam ich den Fehler "Unknown command" wenn ich an der entsprechenden Stelle deiner Zeile das entsprechende Passwort eingebe.
Titel: Antw:FHEM Befehl über SSH/Shell schicken
Beitrag von: kroman am 28 Oktober 2017, 17:12:39
Wahrscheinlich hast du nc nicht installiert, oder?


sudo apt-get install netcat
Titel: Antw:FHEM Befehl über SSH/Shell schicken
Beitrag von: ernst1024 am 28 Oktober 2017, 17:15:28
Zitat von: tobelix am 28 Oktober 2017, 17:07:18

Die Fehlermeldung wurde mir eben erst angezeigt, nachdem ich in der fhem.cfg mal das telnet Passwort auskommentiert habe, da Ernst das in seinem Device scheinbar nicht drin hat?


genau, habe ich temporär auskommentiert
Titel: Antw:FHEM Befehl über SSH/Shell schicken
Beitrag von: kroman am 28 Oktober 2017, 21:35:27
So geht's übrigens auch:


perl /opt/fhem/fhem.pl 7072 passwort "set Bewegungsalarm 1"
Titel: Antw:FHEM Befehl über SSH/Shell schicken
Beitrag von: tobelix am 28 Oktober 2017, 21:41:08
Ja,so habe ich es jetzt auch umgesetzt. Danke euch