NEWS
[gelöst] ssh exec führt remote script nicht aus
-
Hallo zusammen,
ich habe versucht, in den bestehenden Beiträgen Hilfe zu finden, aber es will bei mir nicht klappen.
Ich möchte aus dem blockly heraus ein script auf einem anderen raspi ausführen.
Einfache Befehle (ls, whoami etc.) und auch ein test.sh mit einfachen Befehlen werden ausgeführt, aber nicht das eigentliche script.mein ssh exec sieht so aus:
Das Script ist in folgendem Ordner und Berechtigungen:-rwxr-xr-x 1 pi pi 90964 Nov 7 12:20 e3dcset
Wenn ich das Script lokal in einer shell aufrufe, gibt es keine Probleme:
pi@raspberrypi:~ $ /home/pi/e3dcset/e3dcset Usage: e3dcset [-c LadeLeistung] [-d EntladeLeistung] [-e LadungsMenge] [-a] [-p Pfad zur Konfigurationsdatei]
In einem Beitrag wurde geschrieben, dass iobroker die Javascripte mit dem user "iobroker" ausführt, aber in dem exec gebe ich ihm ja den user "pi" mit, wenn ich über das exec den Befehl "whoami" absetze kommt auch "pi" zurück.
Wo liegt der Fehler? Kann mir jemand helfen?Danke und Gruß
Nils
-
@nkoebe Wenn Du aus dem iobroker ein Skript aufrufst, arbeitest Du mit dem user iobroker und nicht mit pi. Also musst Du dem user iobroker die Rechte geben.
Am Besten prüfst Du das indem Du das Skript versuchst über den User iobroker im Terminal auszuführen.
sudo -su iobroker /home/pi/e3dcset/e3dcset
Wenn Du über remote ssh und den user pi das Ganze ausführen willst, dann musst Du die credentials des users pi im Homeverzeichnis des User iobroker ablegen.
~/.ssh $ ls -la insgesamt 28 drwx------ 2 iobroker iobroker 4096 29. Apr 2024 . drwxr-xr-x 14 iobroker iobroker 4096 16. Okt 13:31 .. -rw------- 1 iobroker iobroker 3381 30. Dez 2023 id_rsa -rw-r--r-- 1 iobroker iobroker 741 30. Dez 2023 id_rsa.pub -rw------- 1 iobroker iobroker 4860 29. Apr 2024 known_hosts
-
-
@thomas-braun richtig, da hatte ich den Pfad falsch angegeben, den hatte ich für den post hier eingetippt, Im script ist er richtig gewesen
@mickym mit dem iobroker user geht es lokal auch:
pi@raspberrypi:~/e3dcset $ sudo -su iobroker iobroker@raspberrypi:/home/pi $ /home/pi/e3dcset/e3dcset Usage: e3dcset [-c LadeLeistung] [-d EntladeLeistung] [-e LadungsMenge] [-a] [-p Pfad zur Konfigurationsdatei]
Ich probiere jetzt trotzdem das mit den credentials einzurichten.
Danke schonmal für die Antworten. -
@nkoebe sagte in ssh exec führt remote script nicht aus:
den hatte ich für den post hier eingetippt,
Dann gewöhn dir bitte an sowas zu kopieren und nicht abzupinnen. Ist zu fehlerträchtig und führt zu falschen Diagnosen.
-
@mickym said in ssh exec führt remote script nicht aus:
Wenn Du über remote ssh und den user pi das Ganze ausführen willst, dann musst Du die credentials des users pi im Homeverzeichnis des User iobroker ablegen.
Ich bin mir nicht sicher, ob ich das korrekt verstanden habe.
Soll ich jetzt per scp die Dateien aus dem .ssh Verzeichnis des pi users in das .ssh Verzeichnis des iobroker users kopieren?
Das hat leider keine Besserung gebracht...Ich kann immer noch nicht nachvollziehen, wieso alles andere funktioniert, nur nicht das gewünschte Programm.
Alles andere funktioniert über ssh.exec, whoami gibt pi aus, Verzeichnis über mkdir anlegen klappt, shell scripte ausführen auch, nur nicht das e3dcset.Der blockly Funktion gibt man ja auch den user pi beim Erzeugen der ssh variable mit.
Eben ist mir aufgefallen, dass es ja kein .sh ist, sondern ein binary, was ich ausführen möchte, kann es etwas damit zutun haben?
-
@nkoebe Nicht nur kopieren, sondern natürlich auch die Rechte anpassen. Es muss in das Homeverzeichnis des iobroker Users.
Generell einfach unter dem User iobroker prüfen, ob der Aufruf klappt.Unter dem User iobroker, dann den User pi mitgeben:
sudo -su iobroker ssh pi@<IPAdresse des RemoteSystems> /home/pi/e3dcset/e3dcset
Ich habe die SSH Konfig unter iobroker Homeverzeichnis für den User PI auf dem Fremdsystem durchgeführt. (Anleitungen gibts ja genug).
-
@mickym vielen Dank, es hat jetzt geklappt!
Ich habe wie unter https://linuxize.com/post/how-to-setup-passwordless-ssh-login/ auf dem iobroker raspi für den user iobroker einen ssh key erzeugt und über ssh-copy-id zum user pi auf den anderen raspi kopiert.
Damit kann sich der user iobroker jetzt ohne Passwort per ssh auf dem raspi als user pi anmelden und der Aufruf des Programms klappt endlich im Blockly.Ich verstehe nur nicht, wozu ich im Blockly die ssh user Angaben mache, wenn ich es dann nachher noch über das keyfile regeln muss
Vielen Dank für die Unterstützung und die Geduld
-