NEWS
[GELÖST] SSH-Befehle per Blockly absetzen
-
Hallo zusammen,
ich möchte gerne per zB Blockly eine SSH-Verbindung zu meinen Mikrotik-Switches aufbauen, um dort beispielsweise WoL-Befehle senden zu lassen oder auch PoE auf einzelnen Ports abzuschalten (oder Ports komplett zu deaktivieren).
SSH-Verbindung zu den Switches auf Putty zB funktioniert und auch die Befehle sind korrekt und funktionieren.Jetzt möchte ich das ganze aber auch über den ioBroker ansprechen, um Vorgänge zu automatisieren (Abschalten einzelner WLAN-APs im Garten (oder) bei Abwesenheit beispielsweise).
Nur irgendwie komm ich da auf keinen grünen Faden.Gibt es da irgendwo ne vernünftige Anleitung? Oder kann mir wer kurz Beschreiben, was ich alles dafür tun/haben muss?
Habs bisher mit Javascript Funktionen über simple-ssh und ssh2 versucht, hat aber genausowenig funkitoniert wie mein exec-Befehl.Besten Dank und Grüße
Marian -
@t-147 Was genau funktioniert denn nicht?
Vielleicht zeigst du mal dein Script und die dazugehörigen Fehlermeldungen
Wenn Putty per SSH auf den Switch geht, mal SSH von IOB auf den Switch probiert?
-
@wendy2702
Erster Versuch warvar SSH = require('simple-ssh'); var ssh = new SSH({ host: 'XXX.XXX.XXX.XXX', port: 22, user: 'admin', pass: '***' }); ssh.exec('/tool/wol interface=vlan100 mac=XX:XX:XX:XX:XX:XX').start();
Danach hab ich simple-ssh mit ssh2 ersetzt, beides jeweils als zusätzliches NPM-Modul im Adapter angegeben.
Direkte Verbindung vom iob zum Switch hab ich noch gar nicht getestet, zu anderen Geräten wie das NAS oder meine RPi's gehts...
-
ich habe es bei mir so gelöst:
// bei Änderung "0_userdata.0.Test.blub" wird Pi neu gestartet on({id: '0_userdata.0.Test.blub', change: "any"}, function (obj) { // SSH fährt Raspberry PI herunter const node_ssh = require('node-ssh').NodeSSH; const ssh = new node_ssh(); ssh.connect({ host: '192.168.xxx.xxx', username: 'Benutzer', password: 'password' }).then(() => { ssh.execCommand("sudo reboot"); }); });
eventuell mal hier schauen:
https://forum.iobroker.net/topic/28617/anderen-raspberry-herunterfahren
-
@t-147 sagte in SSH-Befehle per Blockly absetzen:
Direkte Verbindung vom iob zum Switch hab ich noch gar nicht getestet,
Eventuell muss erst noch der SSH Key vom Switch auf dem iob Host akzeptiert werden .
-
@wendy2702
Danke für den Hinweis, das werd ich nachher als erstes mal testen. -
Und zwar für den User Iobroker, da der Iobroker als User Iobroker läuft.
-
Herzlichen Dank für eure Hilfe!
Das Script von @falke69 hat mir sehr geholfen und auf dieser Grundlage funktioniert es jetzt.
Ein Problem hatte ich unterdessen noch beim Switch gefunden: Hier war die IP einem falschen Interface zugewiesen und daher war der Switch darüber gar nicht zu erreichen, bzw. nur per MAC über upd ansprechbar/konfigurierbar.
Zusätzlich dazu habe ich den ioBroker in das gleiche VLAN umgezogen wie das NAS, weil WoL ja nicht netzwerkübergreifend geht - das hatte ich gar nicht bedacht. Hat aber auch nicht geholfen, da der ioB in Docker läuft und daher eh ein anderes Netzwerk hat.Ein SSH-Key war hier mit dem Script gar nicht nötig, zumindest in Bezug auf diesen Switch.
Jetzt hab ich schon mal eine funktionierende Grundlage und kann damit weiter testen und Funktionen ausarbeiten.Beste Grüße
Marian