NEWS
Einen PI3 durch ioBroker herunterfahren?
-
Vielen Dank für all eure Antworten.
@Homoran Wo finde ich denn diesen Adapter und wofür soll dieser genau sein? Edit: Hab ihn angeschaut, sieht interessant aus... Danke für den Tipp!
@mickym Danke für deine präzise Antwort. Ich nutze aber nicht 2 Raspberrys, sondern nur einer und ein Qnap NAS, auf welches ich einen Befehl schicken will.
Gemäss Qnap funktioniert dort SSH nur als Administrator.@arteck Mit der Anleitung, welche du mir geschickt hast, kann ich wenigstens schon mal eine SSH-Verbindung ohne Passworteingabe herstellen, vielen Dank. Den SSH-Befehl senden per ioBroker geht aber leider nicht.
Die Codezeile "Password" habe ich herausgelöscht und sieht nun wie folgt aus:const node_ssh = require('node-ssh').NodeSSH; const ssh = new node_ssh(); ssh.connect({ host: '192.168.1.10', username: 'admin' }).then(() => { ssh.execCommand("/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh start"); })
Folgende Fehler bekomme ich nun:
An error happened which is most likely from one of your scripts, but the originating script could not be detected.
Error: All configured authentication methods failed
Error: All configured authentication methods failed at doNextAuth (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/client.js:413:17) at tryNextAuth (/opt/iobroker/n
-
@Kusi Aber das macht ja nicht groß was aus. Wenn der iobroker auf dem Raspberry läuft bleiben die Befehle ja alle gleich und nur beim Kopieren auf die Zielmaschine gibst Du halt dann den Befehl für den Administrator auf dem Qnap ein. Also den User bzw. Administrator musst Du halt kennen.
Also:
ssh-copy-id Administrator@<Qnap>
und die Befehle lauten halt dann:
ssh Administrator@<Qnap> Befehl
-
@mickym Braucht es dann also gar nicht mehr einen solch langen Code wie ich oben geschrieben habe?
Muss es somit nur wie folgt aussehen:
ssh admin@192.168.1.10 ssh.execCommand("/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh start")
-
@Kusi said in Einen PI3 durch ioBroker herunterfahren?:
@mickym Braucht es dann also gar nicht mehr einen solch langen Code wie ich oben geschrieben habe?
Muss es somit nur wie folgt aussehen:
ssh admin@192.168.1.10 ssh.execCommand("/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh start"
Meines Erachtens müsste sogar ausreichen:
ssh admin@192.168.1.10 "/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh start"
-
Meines Erachtens müsste sogar ausreichen:
ssh admin@192.168.1.10 "/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh start"
"compile failed" erscheint dann beim Speichern...
-
@Kusi Das hat was mit Deinem Script zu tun - da muss jemand anders Dir ggf. helfen, aber Du kannst doch eine Shell aufmachen und den Befehl testen? Hast Du denn das Zertifikat für den iobroker erzeugt? Vielleicht brauchst für das Script dieses ssh.execCommand. Dann müsste es so gehen, wie Du anfangs beschrieben hast.
-
@mickym sagte in Einen PI3 durch ioBroker herunterfahren?:
@Kusi ....aber Du kannst doch eine Shell aufmachen und den Befehl testen?
Gebe ich den Befehl in Putty als Pi auf dem Raspberry ein, dann funktioniert der Befehl einwandfrei.
Mit Zertifikat meinst du den Key?
Wenn ja, dies habe mit anhand folgender Anleitung gemacht:
Link Text -
@mickym said in Einen PI3 durch ioBroker herunterfahren?:
@Kusi said in Einen PI3 durch ioBroker herunterfahren?:
@mickym Braucht es dann also gar nicht mehr einen solch langen Code wie ich oben geschrieben habe?
Muss es somit nur wie folgt aussehen:
ssh admin@192.168.1.10 ssh.execCommand("/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh start"
Meines Erachtens müsste sogar ausreichen:
ssh admin@192.168.1.10 "/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh start"
Müsste aber dann ggf. so aussehen - wie gesagt mit dem Script im iobroker bin ich nicht der Guru:
ssh.execCommand ("ssh admin@192.168.1.10 /share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh start")
Vielleicht braucht man aber auch das doppelt ssh nicht, dann sieht es halt so aus:
ssh.execCommand ("admin@192.168.1.10 /share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh start")
.,. aber dafür gibt es genügend hier an Board die gut Scripten können.
-
@Kusi said in Einen PI3 durch ioBroker herunterfahren?:
@mickym sagte in Einen PI3 durch ioBroker herunterfahren?:
@Kusi ....aber Du kannst doch eine Shell aufmachen und den Befehl testen?
Gebe ich den Befehl in Putty als Pi auf dem Raspberry ein, dann funktioniert der Befehl einwandfrei.
Mit Zertifikat meinst du den Key?
Wenn ja, dies habe mit anhand folgender Anleitung gemacht:
Link TextOK dann funktioniert es prinzipiell - aber Du willst es ja nicht mit dem User Pi auf dem Raspberry machen, sondern als User iobroker. Deswegen habe ich Dir das ja Step für Step aufgeschrieben.
-
@mickym Jetzt verstehe ich was du meinst....
Wenn ich mich mit Putty anmelde, dann bin ich mit dem User "pi" angemeldet.
Wenn ich einen Befehl aus iobroker sende, dann bin ich als User "iobroker" angemeldet? -
@Kusi Richtig !!!
Deswegen meine Anleitung - um es als iobroker User zu machen.
Der ssh-copy-id Befehl muss dann lauten:
ssh-copy-id admin@192.168.1.10
-
@mickym Wie kann ich alle ssh-keygen löschen und von vorne beginnen???
Nach deiner Anleitung habe ich es nun gemacht und von Putty konnte ich wieder auf das NAS zugreifen. In ioBroker erhalte ich wieder Fehlermeldungen.
Fehler "Error in callback: ReferenceError: ssh is not defined" wird angezeigt.
-
@Kusi Schau Dir mal mein letztes ssh Command an - vielleicht ist das richtig:
ssh.execCommand ("admin@192.168.1.10 /share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh start");
Ansonsten hast Du auf der Serverseite - also Deine Zielmaschine, wenn Du Dich als admin anmeldest im Homeverzeichnis ein .ssh Verzeichnis- Dort löscht Du die Datei authorized_keys. Also als admin auf deinem qnap und dann als admin
rm ~/.ssh/authorized_keys
Unter den Benutzern unter den Du den keygen hast laufen lassen, löscht Du im Homeverzeichnis das ganze Verzeichnis .ssh
rm -f ~/.ssh
oder auch nur die Dateien id_*
rm ~/.ssh/id*
-
@mickym Vielen Dank, habe alles gelöscht und nochmals von vorne begonnen.
Der Code lautet jetzt
ssh.execCommand("admin@192.168.1.10 /share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh start");
Es kommt unter anderem der Fehler "Error in callback: ReferenceError: ssh is not defined".
-
@Kusi Wie gesagt - ich bin kein JAVA Script Mensch - aber habe das gerade mal in der iobroker Referenz nachgeschaut:
Da musst Du dem Adapter erlauben, dass er exec ausführen darf.
Ich weiß nur nicht ob die Callback Funktion erforderlich ist. Ansonsten wenn die nicht erforderlich ist müsste der Befehl doch nur lauten:
exec ("ssh admin@192.168.1.10 /share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh start");
-
@mickym Jetzt habe ich aber eine andere Frage... Du hast gesagt, wenn ich mich mit ioBroker anmelde, dann lautet mein Anmeldename "iobroker". Wenn ich aber unter Benutzer schaue, dann steht dort "admin".
Hat dies etwas damit zu tun? -
@Kusi Nein admin ist der Name unter dem Du im iobroker angemeldet bist. (das ist ein eigenes Benutzerverwaltungssystem und hat mit den Systembenutzern also LINUX nichts zu tun). Das ganze iobroker System läuft aber unter einem Linux User und der lautet iobroker. Deshalb musst Du auch das Zertifikat unter diesem User erstellen, damit der iobroker als System sein Zertifikat findet, mit dem es sich an Deimem qnas System anmeldet.
-
@mickym Und das Zertifikat wird mit diesem Keygen erstellt?
-
@Kusi Genau. ssh-key-gen ist ein Linux Befehl. Du meldest Du ja als pi-User an und mit sudo -su iobroker wechselst Du Deine Kennung von pi auf iobroker. der ssh-key-gen befehl erstellt unter dem user in dessen Homeverzeichnis (~) ein Verzeichnis .ssh und dort 2 ID Dateien. Eine heißt standardmäßig id_rsa und eine heißt id_rsa.pub.
Die id_rsa Datei enthält den privaten Schlüssel, den öffentlichen Schlüssel id_rsa.pub wird in die authorized_keys Datei auf dem Server kopiert unter dem User mit dem man sich anmeldet.
-
@mickym super, Danke für deine Erklärungen, Unterstützung und Geduld.
Falls ich am NAS mal das Administratoren-Kennwort wechsel würde, muss ich den Keygen neu starten oder macht dieser unabhängig vom Kennwort die Kommunikation untereinander möglich?Jetzt brauche ich somit nur noch die Hilfe beim Code.