Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Routerzugriff mit SSH; Gibt es da schon was?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    14
    1
    258

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    585

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.8k

Routerzugriff mit SSH; Gibt es da schon was?

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
10 Beiträge 2 Kommentatoren 967 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    mrieglhofer
    schrieb am zuletzt editiert von
    #1

    Hallo
    Leider halten sich meine Erfahrungen mit JS sehr in Grenzen. Daher komme ich da nicht weiter.

    Ich habe einen Draytek Router, der problemlos über SSH konfiguriert und bedient werden kann. Die Befehle sind dokumentiert.
    Der Gedanke, nachdem es keinen Adapter dafür gibt, wäre mit JS auf SSH zuzufgreifen und dort quasi einen Dialog zu simulieren. Änderungen am Router hinsichtlich Keys sind nicht möglich.
    Direkt am PI sollte es mit SSH und dem Expect Packet machbar sein.

    Anforderungen:
    Login mit ssh <user>@<ip> -c <crypt>
    Passwort: <Passwort> (kommt eine Meldung wegen Keys, dann Yes)
    danach warten auf Prompt und Befehl wie sys reboot usw. Der Rest ist dann eh simpel, weil es immer gleich läuft.

    Hat da jemand vielleicht ein Muster, Vorlage oder so etwas, wie ich das angehen könnte. An sich wäre das ja auch eine Idee für einen Universal SSH Adapter, da viele Router über SSH gesteuert werden können und nach dem Login daher nur der Dialog anders konfiguriert werden müsste.

    Wäre nett, wenn jemand helfen könnte.

    AlCalzoneA 1 Antwort Letzte Antwort
    0
    • M mrieglhofer

      Hallo
      Leider halten sich meine Erfahrungen mit JS sehr in Grenzen. Daher komme ich da nicht weiter.

      Ich habe einen Draytek Router, der problemlos über SSH konfiguriert und bedient werden kann. Die Befehle sind dokumentiert.
      Der Gedanke, nachdem es keinen Adapter dafür gibt, wäre mit JS auf SSH zuzufgreifen und dort quasi einen Dialog zu simulieren. Änderungen am Router hinsichtlich Keys sind nicht möglich.
      Direkt am PI sollte es mit SSH und dem Expect Packet machbar sein.

      Anforderungen:
      Login mit ssh <user>@<ip> -c <crypt>
      Passwort: <Passwort> (kommt eine Meldung wegen Keys, dann Yes)
      danach warten auf Prompt und Befehl wie sys reboot usw. Der Rest ist dann eh simpel, weil es immer gleich läuft.

      Hat da jemand vielleicht ein Muster, Vorlage oder so etwas, wie ich das angehen könnte. An sich wäre das ja auch eine Idee für einen Universal SSH Adapter, da viele Router über SSH gesteuert werden können und nach dem Login daher nur der Dialog anders konfiguriert werden müsste.

      Wäre nett, wenn jemand helfen könnte.

      AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      schrieb am zuletzt editiert von
      #2

      @mrieglhofer Das geht mit dem Skript-Adapter und https://www.npmjs.com/package/node-ssh

      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

      1 Antwort Letzte Antwort
      0
      • M Offline
        M Offline
        mrieglhofer
        schrieb am zuletzt editiert von
        #3

        Verstehe ich das richtig? Wenn ich das node package installiere, kann ich aus dem Script Adapter darauf zugreifen? Den Rest muss ich mir in Ruhe in der Doku anschauen und probieren.

        AlCalzoneA 1 Antwort Letzte Antwort
        0
        • M mrieglhofer

          Verstehe ich das richtig? Wenn ich das node package installiere, kann ich aus dem Script Adapter darauf zugreifen? Den Rest muss ich mir in Ruhe in der Doku anschauen und probieren.

          AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          schrieb am zuletzt editiert von
          #4

          @mrieglhofer Du musst es in der Konfiguration des Skript-Adapters bei "zusätzliche Module" eintragen, dann kannst du es im Skript per require("node-ssh") laden.

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          1 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            mrieglhofer
            schrieb am zuletzt editiert von
            #5

            Danke.
            Noch eine Frage: in welches Verzeichnis gehört das Modul. Ich habe es nämlich gerade versehentlich in die Wurzel installiert (wegen der Fehler dann mit Sudo) und Uninstall lässt den ganzen Müll leider dort). Hatte einige Probleme, es dort wieder los zu werden. ;-) Gottlob habe ich immer ein Backup-Karte.
            Beim IoBroker unter nodes_modules oder unter /opt/iobroker/node_modules/iobroker.javascript/node_modules

            AlCalzoneA 1 Antwort Letzte Antwort
            0
            • M mrieglhofer

              Danke.
              Noch eine Frage: in welches Verzeichnis gehört das Modul. Ich habe es nämlich gerade versehentlich in die Wurzel installiert (wegen der Fehler dann mit Sudo) und Uninstall lässt den ganzen Müll leider dort). Hatte einige Probleme, es dort wieder los zu werden. ;-) Gottlob habe ich immer ein Backup-Karte.
              Beim IoBroker unter nodes_modules oder unter /opt/iobroker/node_modules/iobroker.javascript/node_modules

              AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von
              #6

              @mrieglhofer Nicht manuell installieren! Da steht es:

              @AlCalzone sagte in Routerzugriff mit SSH; Gibt es da schon was?:

              Du musst es in der Konfiguration des Skript-Adapters bei "zusätzliche Module" eintragen

              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

              M 1 Antwort Letzte Antwort
              0
              • AlCalzoneA AlCalzone

                @mrieglhofer Nicht manuell installieren! Da steht es:

                @AlCalzone sagte in Routerzugriff mit SSH; Gibt es da schon was?:

                Du musst es in der Konfiguration des Skript-Adapters bei "zusätzliche Module" eintragen

                M Offline
                M Offline
                mrieglhofer
                schrieb am zuletzt editiert von mrieglhofer
                #7

                @AlCalzone

                Danke, war für nicht so klar, dass man das nicht installieren muss. Bei den meisten Sprachen musst ja das Modul zuerst installieren, bevor du drauf zugreifen kannst. Naja, ist schon länger her ;-)
                Zumindest schreit im Moment nichts. Da kann ich mich jetzt mal weiter einlesen und probieren.

                AlCalzoneA 1 Antwort Letzte Antwort
                0
                • M mrieglhofer

                  @AlCalzone

                  Danke, war für nicht so klar, dass man das nicht installieren muss. Bei den meisten Sprachen musst ja das Modul zuerst installieren, bevor du drauf zugreifen kannst. Naja, ist schon länger her ;-)
                  Zumindest schreit im Moment nichts. Da kann ich mich jetzt mal weiter einlesen und probieren.

                  AlCalzoneA Offline
                  AlCalzoneA Offline
                  AlCalzone
                  Developer
                  schrieb am zuletzt editiert von
                  #8

                  @mrieglhofer das schon, aber der Adapter macht das für dich. Ohne die Einstellung würde es beim adapter update verloren gehen

                  Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                  M 1 Antwort Letzte Antwort
                  0
                  • AlCalzoneA AlCalzone

                    @mrieglhofer das schon, aber der Adapter macht das für dich. Ohne die Einstellung würde es beim adapter update verloren gehen

                    M Offline
                    M Offline
                    mrieglhofer
                    schrieb am zuletzt editiert von
                    #9

                    @AlCalzone
                    Heisst also. alle node Packete unter JavaScript so verwalten.

                    Jetzt habe ich mal das Connect hingebracht. Der Router wollte nur 3des-cbc.
                    Jetzt bekomme ich zumindest mal connected. Mehr sehe ich im Router leider auch nicht

                    Aber jetzt hänge ich an der Frage, wie kann ich ihm jetzt Befehle schicken. Was so im Internet rumgeistert, hat zu keiner Lösung geführt. Gibt da irgendein Muster. Sonst sehe ich als module expect. Könnte ich damit weiterkommen?

                    var node_ssh
                    
                    node_ssh = require('node-ssh')
                    ssh = new node_ssh()
                    password='xxxxx'
                    
                    function test(line){
                        console.log('stdout: ' + line)
                        };
                    
                    ssh.connect({
                      host: '192.168.2.1',
                      username: 'admin',
                      port: 22,
                      password,
                        algorithms: {
                            cipher: [
                            '3des-cbc'
                        ]
                      },
                      tryKeyboard: true,
                      debug: test,
                      onKeyboardInteractive: (name, instructions, instructionsLang, prompts, finish) => {
                          if (prompts.length > 0 && prompts[0].prompt.toLowerCase().includes('password')) {
                            finish([password])
                          }
                        }
                    })
                    
                    14:10:03.524	info	javascript.1 (4859) Stop script script.js.Test.SSH
                    14:10:07.718	info	javascript.1 (4859) Start javascript script.js.Test.SSH
                    14:10:07.726	info	javascript.1 (4859) script.js.Test.SSH: registered 0 subscriptions and 0 schedules
                    14:10:07.728	info	javascript.1 (4859) script.js.Test.SSH: stdout: DEBUG: Local ident: 'SSH-2.0-ssh2js0.4.8'
                    14:10:07.728	info	javascript.1 (4859) script.js.Test.SSH: stdout: DEBUG: Client: Trying 192.168.2.1 on port 22 ...
                    14:10:07.732	info	javascript.1 (4859) script.js.Test.SSH: stdout: DEBUG: Client: Connected
                    14:10:07.734	info	javascript.1 (4859) script.js.Test.SSH: stdout: DEBUG: Parser: IN_INIT
                    
                    AlCalzoneA 1 Antwort Letzte Antwort
                    0
                    • M mrieglhofer

                      @AlCalzone
                      Heisst also. alle node Packete unter JavaScript so verwalten.

                      Jetzt habe ich mal das Connect hingebracht. Der Router wollte nur 3des-cbc.
                      Jetzt bekomme ich zumindest mal connected. Mehr sehe ich im Router leider auch nicht

                      Aber jetzt hänge ich an der Frage, wie kann ich ihm jetzt Befehle schicken. Was so im Internet rumgeistert, hat zu keiner Lösung geführt. Gibt da irgendein Muster. Sonst sehe ich als module expect. Könnte ich damit weiterkommen?

                      var node_ssh
                      
                      node_ssh = require('node-ssh')
                      ssh = new node_ssh()
                      password='xxxxx'
                      
                      function test(line){
                          console.log('stdout: ' + line)
                          };
                      
                      ssh.connect({
                        host: '192.168.2.1',
                        username: 'admin',
                        port: 22,
                        password,
                          algorithms: {
                              cipher: [
                              '3des-cbc'
                          ]
                        },
                        tryKeyboard: true,
                        debug: test,
                        onKeyboardInteractive: (name, instructions, instructionsLang, prompts, finish) => {
                            if (prompts.length > 0 && prompts[0].prompt.toLowerCase().includes('password')) {
                              finish([password])
                            }
                          }
                      })
                      
                      14:10:03.524	info	javascript.1 (4859) Stop script script.js.Test.SSH
                      14:10:07.718	info	javascript.1 (4859) Start javascript script.js.Test.SSH
                      14:10:07.726	info	javascript.1 (4859) script.js.Test.SSH: registered 0 subscriptions and 0 schedules
                      14:10:07.728	info	javascript.1 (4859) script.js.Test.SSH: stdout: DEBUG: Local ident: 'SSH-2.0-ssh2js0.4.8'
                      14:10:07.728	info	javascript.1 (4859) script.js.Test.SSH: stdout: DEBUG: Client: Trying 192.168.2.1 on port 22 ...
                      14:10:07.732	info	javascript.1 (4859) script.js.Test.SSH: stdout: DEBUG: Client: Connected
                      14:10:07.734	info	javascript.1 (4859) script.js.Test.SSH: stdout: DEBUG: Parser: IN_INIT
                      
                      AlCalzoneA Offline
                      AlCalzoneA Offline
                      AlCalzone
                      Developer
                      schrieb am zuletzt editiert von AlCalzone
                      #10

                      @mrieglhofer Z.B. so. Aus Gründen der Lesbarkeit bevorzuge ich async/await über die .then-Beispiel aus der Doku

                      const node_ssh = require("node-ssh");
                      const ssh = new node_ssh();
                      
                      const password = "xxxxx";
                      
                      async function main() {
                      
                      	await ssh.connect({
                      		host: "192.168.2.1",
                      		username: "admin",
                      		port: 22,
                      		password,
                      		algorithms: {
                      			cipher: ["3des-cbc"]
                      		},
                      		tryKeyboard: true,
                      		onKeyboardInteractive: (name, instructions, instructionsLang, prompts, finish) => {
                      			if (prompts.length > 0 && prompts[0].prompt.toLowerCase().includes('password')) {
                      				finish([password])
                      			}
                      		}
                      	});
                      
                      	const result1 = await ssh.execCommand('befehl', { cwd: '/pfad/zum/workdir' });
                      	log('STDOUT: ' + result1.stdout);
                      	log('STDERR: ' + result1.stderr);
                      
                      	// Weitere Befehle...
                      
                      }
                      main();
                      

                      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      926

                      Online

                      32.5k

                      Benutzer

                      81.9k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe