Von Pi3 auf PiZero aus Fhem SSH Befehle senden (gelöst)

Begonnen von schwatter, 31 Oktober 2017, 22:48:16

Vorheriges Thema - Nächstes Thema

schwatter

Hallo,

ich habe an meinen Fernseher einen PiZeroW um HDMICEC-Befehle zu senden.
Um Befehle aus Fhem zu senden, habe ich mich an diese Anleitung gehalten
und versucht es per SSH von meinem Raspi3 auf den PiZeroW umzusetzten.

https://forum.fhem.de/index.php?topic=65505.0


Als erstes hatte ich es im Terminal per sshpass hinbekommen mit z.B.

sshpass -p password ssh pi@192.168.178.*** -t 'echo "on 0" | cec-client -s'

Nachdem ich alle Artikel zu SSH und auch zu Script starten gelesen habe bin ich irgendwie nicht schlauer :)
Um eine Fehlerquelle auszuschließen, habe ich SSH login without password eingerichtet. Funktioniert per Terminal.
Und auch in /etc/sudoers habe ich "fhem ALL=(ALL) NOPASSWD: ALL" eingefügt.

Mein weiteres vorgehen war, das ich in /opt/fhem den ordner script angelegt. Dann habe ich meine Befehle in Scripte
gepackt. Grund, ich habe irgendwo gelesen, das bestimmte Befehle nicht aus Fhem gehen. Auch kein Glück mit gehabt.

In Fhem
Fernseher:on {system("/opt/fhem/script/tvon.sh &")}

Mein Script

#!/bin/bash
ssh pi@192.168.178.*** -t 'echo "on 0" | cec-client -s'


Aber auch das funktionierte nicht mit dem Aufruf aus Fhem.
Dann habe ich es nochmal ohne Script probiert. Auch ohne Erfolg.


Fernseher:off { system('ssh pi@192.168.178.*** -t "echo "on 0" | cec-client -s"') }


Wo ist mein Denkfehler?

Otto123

#1
Hi,
Zitathabe ich SSH login without password eingerichtet. Funktioniert per Terminal.
Für welchen User hast Du das getan?
ZitatUnd auch in /etc/sudoers habe ich "fhem ALL=(ALL) NOPASSWD: ALL" eingefügt.
Das ist nicht schön. Und leider auch völlig unnötig!

Du schreibst zwar was Du probiert hast und das es nicht geht - aber die Fehler beschreibst Du leider nicht.

BTW: sshpass war mir zu "kompliziert" ich habe das so gemacht, vielleicht hilft Dir das.

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

Ich hatte es mit dem User Pi probiert, sowie auch ein "sudo su" und damit. Ich hatte gelesen, das es mit dem User Fhem gemacht werden muss.
Wenn ich aber "sudo su - fhem" eingebe und dann wieder "whoami" bekomme ich wieder ein User Pi. Ich werde mir deinen Blog nochmal
durchlesen.

Zu den Fehlern, es passiert aus Fhem einfach nichts. Im Terminal top.

Wie aber müsste der Befehl in Fhem lauten, wenn ich ihn daraus starten möchte?

Otto123

#3
Dein Befehl ist nicht falsch - du musst nur verstehen was passiert und welches Benutzerkonto was tut.
Du meldest Dich mit Pi an System1 im Terminal an. User Pi tut es.
Du sendest einen Befehl aus FHEM in System1. User fhem tut es.

Du sendest einen Befehl an System2 als Benutzer user@System2. Oder konkreter:
Der user@System1 sagt dem System2 das er berechtigt ist als user@system2 etwas zu tun. System2 weiß das der user@system1 es darf.

Dein interaktiver Fall: pi@system1 sendet Befehle und gibt sich in System2 als pi@system2 aus.
Dein FHEM Fall:       fhem@system1 sendet Befehle und gibt sich in System2 als pi@system2 aus.

Warum funktioniert es bei Dir nicht:
Du hast einfach dem System2 nicht gesagt das fhem@system1 auch der pi@system2 sein darf.

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

CoolTux

Du kannst Dich auch als pi am zweiten System anmelden, dennoch müssen die Zertifikate am Ort liegen vom welchen User der Aufruf kommt.

Wenn Du in FHEM ein ssh pi@IP machst, wirst Du Dich am entfernten Horst als Pi anmelden, die Zertifikate (Schlüssel) müssen aber für FHEM erreichbar sein und es muß einmalig eine Verbindung in einer Konsole stattgefunden haben so das eine known_hosts erstellt werden konnte.

Somit ist es empfehlenswert einfach den .ssh Ordner von pi nach /opt/fhem/ zu kopieren und die Rechte an zu passen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

schwatter

#5
Vielen Dank euch, endlich, es funktioniert  :)

Folgendes hab ich jetzt gemacht.

1. SSH login without password
2. Dann den Ordner .ssh nach /opt/fhem/ kopiert
3. Rechte vergeben. Der Ordner .ssh:0700 und die Dateien id_rsa:0600, id_rsa.pub:0644, known_hosts:0644
4. Gruppe habe ich auf pi[1000] gelassen. Den Eigentümer musste ich aber auf fhem [999] setzten. Das habe ich für den Ordner sowie die 3 Dateien in ihm wiederholt.
5. In Fhem den Befehl Fernseher:on { system('ssh pi@192.168.178.49 -t "echo "on 0" | cec-client -s"') }