Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    260

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.6k

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

Routerzugriff mit SSH; Gibt es da schon was?

Scheduled Pinned Locked Moved JavaScript
javascript
10 Posts 2 Posters 1.1k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    mrieglhofer
    wrote on last edited by
    #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 Reply Last reply
    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
      wrote on last edited by
      #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 Reply Last reply
      0
      • M Offline
        M Offline
        mrieglhofer
        wrote on last edited by
        #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 Reply Last reply
        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
          wrote on last edited by
          #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 Reply Last reply
          0
          • M Offline
            M Offline
            mrieglhofer
            wrote on last edited by
            #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 Reply Last reply
            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
              wrote on last edited by
              #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 Reply Last reply
              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
                wrote on last edited by 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 Reply Last reply
                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
                  wrote on last edited by
                  #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 Reply Last reply
                  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
                    wrote on last edited by
                    #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 Reply Last reply
                    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
                      wrote on last edited by 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 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      598

                      Online

                      32.7k

                      Users

                      82.5k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Home
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe