NEWS
[gelöst] Zusätzlichen Raspberry per Remote per Script Booten
-
Ist schon richtig.
bei RaspberryMatic kann man (so einfach) nichts anderes installieren.
Bliebe nur der Schritt zu piVCCU, dann geht alles
Gruß
Rainer
-
Also eigentlich wollte ich ja mit dem RaspberryMatic Gateway die Komplexität vereinfachen in dem ich Com-Errors wegbekomme auf die ich reagieren müsste…. nun noch piVCCU.... ich glaub eher nicht wirklich wobei es sich sehr interessant darstellt.
Ich glaub ich mach das jetzt mal ganz einfach so, dass ich das Gateway per Job täglich einmal boote und beobachte mal ob das Problem dann überhaupt noch auftritt
-
Ich habe im Downloadbereich fertige images für RasPi und Tinkerboard mit ioBroker incl. piVCCU eingestellt.
Probier doch mal eins davon aus.
Gruß Rainer
-
Sodele, habe wohl nun doch einen Weg mit "sshpass" gefunden - zumindest vom Terminal-Fenster aus kann ich Remote den Raspi mit dem HM Gateway booten.
Step 2
exec('ssh pi@192.168.1.XXX 'echo raspberry | sudo shutdown -r now'); `
Irgendwie funktioniert der "exec" Befehl aber nicht
Er wird zwar im Log protokolliert, aber es passiert nichts. Habe mit Blockly ein Script gemacht, welches anläuft, scheinbar den Befehl ausführt aber der raspi auf der anderen Seite tut nichts. Mach ich es aus dem Termin-Fenster geht es.
So sieht der Code vom Blockly aus:
schedule("34 * * * *", function () { exec('sshpass -p \'passwort\' ssh root@192.168.1.325 \'reboot -d 2 | exit\''); console.log("exec: " + 'sshpass -p \'passwort\' ssh root@192.168.1.325 \'reboot -d 2 | exit\''); });
Irgend jemand ne Idee was ich falsch mache?
Ich habe im Downloadbereich fertige images für RasPi und Tinkerboard mit ioBroker incl. piVCCU eingestellt.
Probier doch mal eins davon aus. `
Wer dich mal machen - sobald wir hier mit Renovieren durch sind und ich mal wieder Zeit habe. Wird wohl aber erst nächstes JahrIm Moment rennt irgendwie mal wieder die Zeit von dannen und man kommt nicht zu den ganzen schönen Projekten die man noch so machen will
LG
Mario
-
So langsam gehen mir echt die Ideen aus. Habe nun nen Bash Datei gemacht und den Befehlt dort reingelegt. Ausführen auf der Konsole geht Problemlos.
Dann den Aufruf der Bash in ein Javascript eingebunden, da ich dachte ich bin für Blockly zu Blöd:
schedule("38 * * * *", function () { exec('bash /home/pi/reboot-hmgw.sh', function(err, stderr, stdout) { console.log('Err: ' + err); console.log('Fehler: ' + stderr); console.log('Ergebnis: ' + stdout); }); });
Aber auch das führt leider nicht zum Erfolg
Ich verzweifele….
Ausgabe im Log:
javascript.0 2017-12-09 18:38:00.395 info script.js.Systemscripte.Test_HM-GW_Reboot: Ergebnis: javascript.0 2017-12-09 18:38:00.395 info script.js.Systemscripte.Test_HM-GW_Reboot: Fehler: javascript.0 2017-12-09 18:38:00.394 info script.js.Systemscripte.Test_HM-GW_Reboot: Err: Error: Command failed: bash /home/pi/reboot-hmgw.sh
Hat noch irgend jemand eine Idee was ich falsch mache?
-
also … nochmal eine andere Idee von mir.
Wenn der Raspberry nach einem Reboot wieder funktioniert, warum lässt du den nicht einfach jede Nacht einmal Neustarten.
das kannst du auf dem PI direkt machen.
Codewort lautet cronjob
-
Codewort lautet cronjob `
Tja, das habe ich mittlerweile auch ins Auge gefasst wobei ich es schade finde nen täglichen Restart für ein Problem zu machen, was vielleicht 1x im Monat oder eher 1x in 2 Monaten auftaucht. Da dacht ich doch, dass mit so einer Umgebung man darauf anders reagieren kann
Normal würde ich da ja auch gar nichts machen aber wenn es passiert, dann natürlich immer wenn man nicht da ist und an der Stelle wird es halt dumm und daher muss ich irgendwas machen.
Warum der Exec Befehl aber da nicht funzt versteh ich auch nicht aber wäre wohl sonst auch zu einfach…
LG
Mario
-
wie gesagt, du musst das Thema mit dem SSH Privatkey lösen.
probiere doch mal folgendes aus …
1. erstelle ein Shell Script auf dem PI z.b.
nano /root/scripts/testscript.sh
inhalt
echo "hallo">>/root/scripts/test.txt
2. script ausführbar machen
chmod 755 testscript.sh
jetzt im iobroker folgendes javascript erstellen
exec('/home/root/scripts/testscript.sh');
3 . Script Starten
4. prüfen ob in dem Verzeichnis /home/root/scripts/ prüfen ob eine Datei test.txt vorhanden ist.
wenn dein script auf diese Art nicht starten, dann liegt es am script selbst.
p.s. ob du ein Script ausführst oder einen Befehl ist fällig egal.
-
probiere doch mal folgendes aus … `
Hab ich probiert, konnte es unter root aber nicht so anlegen. Aber mir kam dabei eine Idee und die war auch des Rätsels Lösung. Bei der 1. Verbindung zu einem Remote-Raspberry kommt ja bei SSH die Abfrage mit dem ECDSA Fingerprint, welche man Bestätigen muss. Dann wird diese permanent zur Liste der "known hosts" hinzugefügt. Das hatte ich ja schon gemacht aber halt nicht unter dem user "root" sondern unter dem User "pi". Und damit ging natürlich weder der Behle noch die Bash weil beide letztendlich auf ECDSA liefen.
Nun einmal mit "root" gemacht und ohh Wunder -> es geht. Reboot des Remote-Raspberry per Exec Befehl ohne Private Key
Danke agreen! Du hast mich auf die richtige Fährte geschupst :lol:
Die finale Lösung - falls es nochmal jemand anders braucht:
1. sshpass installieren
sudo apt-get install sshpass
2. Eine Verbindung zum entfernten Raspi per SSH unter dem User "root" aufbauen, da IoB (oder die Script-Engine) ja auch darunter läuft
ssh user@192.168.2.325
3. die ECDSA Abfrage mit "yes" bestätigen
4. Entfernten Raspi aus einem Java oder Blockly Script booten mit
exec('sshpass -p \'Kennwort\' ssh user@192.168.2.325 \'reboot -d 2\'');
LG
Mario
-
Moin!
Die Lösung aus dem letzten Post wollte ich ebenfalls mal probieren.
Hintergrund: Ich würde gerne meinen 3D Drucker ausschalten, nachdem die Steckdose an dem er hängt 15 Minuten unter 15w verbraucht hat.
An die Steckdose möchte ich auch meinen OctoPrint Raspberry hängen. Problem ist jedem bekannt: Nen Raspberry einfach ausschalten killt ihn. Ergo würde ich gerne nach 14 Minuten unter 15w den Befehl zum Herunterfahren senden.
Problem ist, wenn ich per ssh auf meinem iobroker bin und
sshpass -p passwort ssh -t pi@172.16.17.6 'sudo poweroff'
absetze klappt das.
Wenn ich das ganze in einem Blockly mache, zum Testen gebunden an einen Lichtschalter passiert nichts.
Ergo, wenn Lichtschalter gedrückt (Der funzt, hab ich mit einer Lampe noch mal extra probiert) dann führe den o.g. Befehl aus.
Eigentlich würde ich erwarten, dass das dann auch so funktioniert.
Das einzige, was mir jetzt gerade kommt ist, dass iobroker auf dem Raspberry nicht unter dem Nutzer "pi" ausgeführt wird.
Das müsste ja der User "admin" sein. Allerdings klappt das auch nicht so recht, wie ich mir das vorstelle.
Ein versuch mich mit dem user "admin" und dem gesetzten Passwort per SSH zu verbinden schlägt fehl, daher vermute ich, dass der user "admin" kein SSH kann/darf und daher kann der Befehl, wenn ich ihn oben auf den User "admin" anpasse vermutlich auch nicht ausgeführt werden.
Wo muss ich ansetzen das Problem zu lösen?