[G E L Ö S T] shell Befehl von FHEM aus klappt nicht - {system ('...

Begonnen von kblc, 17 April 2018, 21:20:39

Vorheriges Thema - Nächstes Thema

kblc

Hallo,
ich bin gerade bei der Neuinstallation meines FHEM. Leider habe ich ein kleines Problem mit folgendem Befehl:
{system ('ssh 192.168.78.140 -l pi -t "sudo echo 1 > /sys/class/backlight/rpi_backlight/bl_power"')}
Der bewirkt, dass ich auf meinem anderen Raspberry Pi den Monitor an oder aus schalten kann. Im Terminal (Mac-User) klappt folgendes super:
ssh Verbindung mit meinem FHEM Raspberry Pi:

ssh 192.168.78.140 -l pi -t 'sudo echo 1 > /sys/class/backlight/rpi_backlight/bl_power'

pi@FHEM136:~ $ ssh 192.168.78.140 -l pi -t 'sudo echo 0 > /sys/class/backlight/rpi_backlight/bl_power'
Connection to 192.168.78.140 closed.
pi@FHEM136:~ $ ssh 192.168.78.140 -l pi -t 'sudo echo 1 > /sys/class/backlight/rpi_backlight/bl_power'
Connection to 192.168.78.140 closed.


Der Befehl wird auf dem pi@touchpannel:~ $ Pi super ausgeführt.

Nur von FHEM aus habe ich meine Probleme.

Alle anderen Befehle
{system("sudo reboot")} oder ähnliche,
laufen. Also sind alle Rechte hoffentlich richtig vergeben.
Meine Fehlervermutungist:
der rote Befehlsteil (ich hoffe ich bringe jetzt keine Fachwörter durcheinander) ist ein String und in dem String ist noch ein String (grün) verbaut. Könnte da der Fehler liegen? Wenn ja, wie kann ich das ändern?

{system ('ssh 192.168.78.140 -l pi -t "sudo echo 1 > /sys/class/backlight/rpi_backlight/bl_power"')}


Danke schon mal, ich würde mich echt freuen, wenn das klappt. Sitze jetzt schon ne Woche dran, aber ohne Erfolg.

Liebe Grüße aus Oberfranken

Kai
SPS, Arduino, Controllino, Sensortechnik, Elektronik

Mitch

müßte es nicht genau andersherum sein?

{system ("ssh 192.168.78.140 -l pi -t 'sudo echo 1 > /sys/class/backlight/rpi_backlight/bl_power'")}
FHEM im Proxmox Container

Otto123

Hi kblc,

was schreibt Dir denn dieser Befehl ins Logfile
ssh 192.168.78.140 -l pi

Das Problem zerfällt in diese Teile:
geht ssh?
Geht der Remote Befehl?
Stimmt die Befehlszeile?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kblc

Hallo
ach danke, also:
Zitat von: Mitch am 17 April 2018, 21:23:23
müßte es nicht genau andersherum sein?

{system ("ssh 192.168.78.140 -l pi -t 'sudo echo 1 > /sys/class/backlight/rpi_backlight/bl_power'")}
das habe ich bereits schon ausprobiert. Das Ergebnis ist gleich.

Zitat von: Otto123 am 17 April 2018, 22:07:21
Hi kblc,

was schreibt Dir denn dieser Befehl ins Logfile
ssh 192.168.78.140 -l pi

Das Problem zerfällt in diese Teile:
geht ssh?
Geht der Remote Befehl?
Stimmt die Befehlszeile?

Gruß Otto


Ja ssh geht beim Ziel-RaspberryPi.
Es besteht keine Passworteingabe da SSH Passwordless Key to Auto Login installiert wurde. Also der FHEM Pi kann sich ohne Passwort auf dem TouchPi anmelden. Funktioniert!


Last login: Wed Apr 18 18:24:19 2018 from 192.168.78.74
pi@FHEM136:~ $ ssh 192.168.78.140 -l pi
Linux touchpannel 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Apr 18 18:24:33 2018 from 192.168.78.136
pi@touchpannel:~ $


Alle Befehle gehen z.B. {system('sudo reboot')} geht aus FHEM heraus

@Otto123: übrigens alles ohne Noobs und brav die lite Version. Danke für den Hinweis nochmal. Ich werde mal ein paar Pralinen nach Leipzig senden.  :)


Kai aus Oberfranken
SPS, Arduino, Controllino, Sensortechnik, Elektronik

Otto123

Hallo Kai,

sorry ich wollte eigentlich, dass Du mal "ssh 192.168.78.140 -l pi"in die FHEM Kommandozeile wirfst und dann ins Logfile von FHEM schaust  ;)

Wenn das alles ohne Probleme geht, ist meine Empfehlung immer: schreib den ganzen Shell Kram in eine Script Datei und starte das Ganze aus FHEM durch
"bash script.sh"
Da fallen alle "Feinheiten" mit " und  ' und Sonderzeichen usw. weg.  :D

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kblc

Hallo,

wen ich den Befehl:
{system ("ssh 192.168.78.140 -l pi -t 'sudo echo 1 > /sys/class/backlight/rpi_backlight/bl_power'")}
in FHEM eingebe, bekomme ich als Antwort:
-1.
Die Idee mit dem shell script ist ja klasse. Das habe ich auch gleich verfolgt. Leider stoße ich auch hier wieder an den gleichen Fehler, wenn ich die Datei von FHEM aus aufrufe.

Folgendes habe ich gemacht:
sudo nano /Programme/TPaus.sh
mit dem Inhalt:

#!/bin/bash
ssh 192.168.78.140 -l pi -t 'sudo echo 1 > /sys/class/backlight/rpi_backlight/bl_power'

Ich habe außerdem mit
chmod -v 777 /Programme/TPaus.sh
die Datei freigegeben. (hoffe ich)

Wenn ich das Script vom Terminal aus aufrufe
bash /Programme/TPaus.sh
klappt alles. Das Touchpannel geht aus.

Das gleiche habe ich auch mit TPan.sh gemacht. Das geht genauso.

Aber wenn ich in FHEM das mit

{system('bash /Programme/TPon.sh')}
eingebe, bekomme ich eben auch "-1" zur Antwort, und es tut sich nichts.

Allerdings habe ich noch ein weiteres Script erstellt:

#!/bin/bash
ssh 192.168.78.140 -l pi -t 'sudo reboot'

Gleicher Weg, wenn ich dieses Script aufrufe bootet der entfernte Raspberry Pi neu. Das ist wirklich komisch.

Kann mir jemand einen Tipp geben?

Vielen Dank.

Kai
SPS, Arduino, Controllino, Sensortechnik, Elektronik

Otto123

Hallo Kai,

ich habe das mit den Rückgaben usw. mal für mich aufgeschrieben, nur zum lesen:
https://heinz-otto.blogspot.de/2018/02/in-fhem-externe-programme-aufrufen.html

-1 ist halt das was system meistens bei einem Aufruf aus FHEM zurück gibt :)

Das hier chmod -v 777 /Programme/TPaus.sh ist ziemlich "Blindleistung" - bei einem Aufruf mit bash muss der user (fhem oder jede andere) lediglich lesen dürfen. Aber es stört auch nicht.

das irritiert mich -> TPan.sh -> {system('bash /Programme/TPon.sh')} Tippfehler oder Fehler?

Steht im Log von FHEM wirklich gar nichts?

Ich bin mir unsicher welcher user Du wirklich auf dem Remote Pi bist. Der Unterschied zwischen Terminal und FHEM ist der aufrufende user: einmal ist es pi, das andere mal ist es fhem.

Ich kenne leider deine Methode der remote Authentisierung nicht, ich mache das immer so Das hat bei mir funktioniert. Ich will damit nicht sagen, probiere diesen Weg. Ich kann bloß zu deinem Weg nichts sagen. Und ich bin froh, dass ich diesen Weg mal für mich nachvollziehbar aufschreiben konnte und halbwegs verstanden habe.  :D

Es scheint unlogisch warum es nicht geht und offenbar könne die anderen auch wenig dazu sagen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

schwatter


kblc

#8
Hallo, es klappt!!! :) :) :) :) :) :)

Vielen vielen Dank.

Ich habe einen Benutzer "fhem" angelegt, ihm shell zugewiesen und die "ssh-ohne-Kennwort" Geschichte von fhem Konto aus. Dann nochmal jedes Programm überprüft und nun klappt es.

Es sind oft so Kleinigkeiten wie der FHEM Benutzer. Ohne den funktioniert fast alles. Aber eben nur fast.
Ich habe es sowohl mit Script als auch direkt geschafft. Der Befehl hat gepasst.

Danke nochmal an alle, vor allem an Otto123. Vielen Dank.

Ich hoffe der Fehler passiert mir nicht mehr.

Kai



SPS, Arduino, Controllino, Sensortechnik, Elektronik