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. Simple-SSH Script lässt Javascript Adapter abstürzen

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    1
    1.3k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Simple-SSH Script lässt Javascript Adapter abstürzen

Scheduled Pinned Locked Moved JavaScript
23 Posts 11 Posters 3.7k Views 11 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.
  • TeNNo2k5T Offline
    TeNNo2k5T Offline
    TeNNo2k5
    wrote on last edited by
    #11

    Vielleicht als Alternative einfach normales SSH mit Public-Key-Authentifizierung verwenden, das entspricht dem normalen Linux Sicherheitskonzept da Passwörter nicht in Skripten hinterlegt sind und bringt den Javascript Adapter nicht durcheinander.

    Anleitung zum Einrichten:

    https://www.thomas-krenn.com/de/wiki/OpenSSH_Public_Key_Authentifizierung_unter_Ubuntu

    Wenn die Verbindung eingerichtet ist einfach die Keys zum iobroker User übertragen:

    cp -rT /home/pi/.ssh/ /home/iobroker/.ssh 
    chown iobroker /home/iobroker/.ssh/authorized_keys 
    chown iobroker /home/iobroker/.ssh/id_rsa 
    chown iobroker /home/iobroker/.ssh/known_hosts
    

    Proxmox VE 7.4 [Shuttle DH310V2] = LXC [Ubuntu 22.04]
    ioBroker – Pi-hole – InfluxDB – Grafana – WireGuard – Ansible - Mosquitto - Zigbee2MQTT

    joergeliJ 1 Reply Last reply
    0
    • TeNNo2k5T TeNNo2k5

      Vielleicht als Alternative einfach normales SSH mit Public-Key-Authentifizierung verwenden, das entspricht dem normalen Linux Sicherheitskonzept da Passwörter nicht in Skripten hinterlegt sind und bringt den Javascript Adapter nicht durcheinander.

      Anleitung zum Einrichten:

      https://www.thomas-krenn.com/de/wiki/OpenSSH_Public_Key_Authentifizierung_unter_Ubuntu

      Wenn die Verbindung eingerichtet ist einfach die Keys zum iobroker User übertragen:

      cp -rT /home/pi/.ssh/ /home/iobroker/.ssh 
      chown iobroker /home/iobroker/.ssh/authorized_keys 
      chown iobroker /home/iobroker/.ssh/id_rsa 
      chown iobroker /home/iobroker/.ssh/known_hosts
      
      joergeliJ Online
      joergeliJ Online
      joergeli
      wrote on last edited by
      #12

      @TeNNo2k5
      ... viele Wege führen nach Rom
      Allerdings scheint mir diese Variante für "Nicht-Linux-Spezies" doch recht kompliziert.

      Ich hatte anfangs auch nicht mit solchen Problemen bei einem Shutdown via SSH gerechnet.
      Habe aber - Dank Eurer Hilfe - eine Lösung gefunden und vor allem einiges dazugelernt.

      Danke nochmals
      Jörg

      1 Reply Last reply
      0
      • joergeliJ joergeli

        @Asgothian
        Ich habe es mit try/catch versucht, leider ebenfalls Absturz der JS-Instanz nach 2-3maligem Herunterfahren.
        Shell-Script wird m.E. auch nicht funktionieren, denn wenn ich z.B. "sleep 3 && shutdown -h now && logout" übergebe, wird der Shutdown-Befehl zwar erst nach 3 Sekunden ausgeführt, aber anschl. wird genau so "unsauber" aus simple-ssh ausgestiegen, als wenn ich den Shutdown_Befehl sofort absetze, weil das "logout" nicht mehr angenommen wird.
        Mit anderen Worten: Wenn Shutdown abgesetzt wurde, kann danach nichts mehr übergeben werden.

        @el_malto
        Das im Link verwendete node-ssh funktioniert :+1:
        Also nicht simple-ssh verwenden, sondern node-ssh.
        Ich habe es jetzt so gelöst:

        var node_ssh = require('node-ssh');
        var ssh = new node_ssh();
        .
        .
                        //Octoprint-Server via SSH herunterfahren
                        setTimeout(function(){
                        log ('__ SSH Verbindung gestartet __');
                        //SSH-Session starten
                            ssh.connect({
                                host: '192.168.192.30',
                                username: 'xxx',
                                password: 'yyy'
                            }).then(() => {
                                ssh.execCommand('echo "yyy"|sudo -S shutdown -h now');
                            });                           
        
                        }, 6000);
        

        Man beachte, daß ich das Passwort (yyy) nochmals an den sudo-Befehl übergeben musste (mit | = pipen), da mein Raspi - warum auch immer - vor der erstmaligen Ausführung eines sudo-Befehls nochmals nach dem Passwort
        fragt.

        Vielen Dank für Eure Hilfe!
        Jörg

        K Offline
        K Offline
        KHK
        wrote on last edited by
        #13

        @joergeli said in Simple-SSH Script lässt Javascript Adapter abstürzen:

        Also nicht simple-ssh verwenden, sondern node-ssh.

        Dieses node-ssh muss das irgendwie neu installiert werden oder was muss gemacht werden?

        Ich habe das mal probiert, aber es kommt die Meldung "TypeError: node_ssh is not a constructor"

        Karl

        joergeliJ E 2 Replies Last reply
        0
        • K KHK

          @joergeli said in Simple-SSH Script lässt Javascript Adapter abstürzen:

          Also nicht simple-ssh verwenden, sondern node-ssh.

          Dieses node-ssh muss das irgendwie neu installiert werden oder was muss gemacht werden?

          Ich habe das mal probiert, aber es kommt die Meldung "TypeError: node_ssh is not a constructor"

          Karl

          joergeliJ Online
          joergeliJ Online
          joergeli
          wrote on last edited by
          #14

          @khk
          Es sollte reichen, node-ssh als zusätzliches Modul in der Konfiguration des JS-Adapters mit einzutragen.
          IMHO wird es dann automatisch installiert.
          js-adapter-konfiguration.jpg
          Gruß
          Jörg

          1 Reply Last reply
          0
          • K KHK

            @joergeli said in Simple-SSH Script lässt Javascript Adapter abstürzen:

            Also nicht simple-ssh verwenden, sondern node-ssh.

            Dieses node-ssh muss das irgendwie neu installiert werden oder was muss gemacht werden?

            Ich habe das mal probiert, aber es kommt die Meldung "TypeError: node_ssh is not a constructor"

            Karl

            E Offline
            E Offline
            el_malto
            wrote on last edited by el_malto
            #15

            @khk du kannst das Skript von oben nicht mehr verwenden. Es haben sich die Aufrufe geändert. Musst dir mal das Example angucken -> https://www.npmjs.com/package/node-ssh
            Ich hab meine Skripte so angepasst:

            const {NodeSSH} = require('node-ssh')
            const ssh = new NodeSSH()
            
            ssh.connect({
              host: '192.168.xxx.xxx',
              username: '<user>',
              password: '<pass>'
            }).then(() => {
              ssh.execCommand("<command>");
            })
            
            joergeliJ 1 Reply Last reply
            0
            • E el_malto

              @khk du kannst das Skript von oben nicht mehr verwenden. Es haben sich die Aufrufe geändert. Musst dir mal das Example angucken -> https://www.npmjs.com/package/node-ssh
              Ich hab meine Skripte so angepasst:

              const {NodeSSH} = require('node-ssh')
              const ssh = new NodeSSH()
              
              ssh.connect({
                host: '192.168.xxx.xxx',
                username: '<user>',
                password: '<pass>'
              }).then(() => {
                ssh.execCommand("<command>");
              })
              
              joergeliJ Online
              joergeliJ Online
              joergeli
              wrote on last edited by
              #16

              @el_malto
              Was ist da jetzt anders als im obigen Script?
              (Außer daß Du NodeSSH in geschweiften Klammern? als Konstante deklariert hast)

              Oder übergibst Du das password nicht nochmals im ssh.execCommand?

              Gruß
              Jörg

              E 1 Reply Last reply
              0
              • joergeliJ joergeli

                @el_malto
                Was ist da jetzt anders als im obigen Script?
                (Außer daß Du NodeSSH in geschweiften Klammern? als Konstante deklariert hast)

                Oder übergibst Du das password nicht nochmals im ssh.execCommand?

                Gruß
                Jörg

                E Offline
                E Offline
                el_malto
                wrote on last edited by el_malto
                #17

                @joergeli es ist jetzt nicht mehr node_ssh sondern NodeSSH. Deswegen auch der Fehler.

                "TypeError: node_ssh is not a constructor"
                

                Ist im Changelog auch drin:
                https://github.com/steelbrain/node-ssh/blob/master/CHANGELOG.md#1100

                joergeliJ 1 Reply Last reply
                0
                • E el_malto

                  @joergeli es ist jetzt nicht mehr node_ssh sondern NodeSSH. Deswegen auch der Fehler.

                  "TypeError: node_ssh is not a constructor"
                  

                  Ist im Changelog auch drin:
                  https://github.com/steelbrain/node-ssh/blob/master/CHANGELOG.md#1100

                  joergeliJ Online
                  joergeliJ Online
                  joergeli
                  wrote on last edited by
                  #18

                  @el_malto
                  ahhh, OK.
                  Ich habe es bei mir jetzt auch wie bei Dir angepasst.

                  const {NodeSSH} = require('node-ssh')
                  const ssh = new NodeSSH()
                  

                  Nebenbei:
                  Bei mir kam keine Fehlermeldung wie bei @KHK, weil ich irgendwann schon mal folgende Anpassung vorgenommen hatte:

                  var node_ssh = require('node-ssh').NodeSSH;
                  var ssh = new node_ssh();
                  

                  (Hatte ich wohl irgendwo im Forum gefunden)

                  Gruß und Danke
                  Jörg

                  1 Reply Last reply
                  1
                  • H Do not disturb
                    H Do not disturb
                    Hansi1234
                    wrote on last edited by
                    #19

                    Hat jemand aktuell noch ein ssh script am laufen? Ich bekomme das Modul nicht installiert:

                    javascript.0	2021-04-26 07:54:48.372	error	(22266) Cannot install nodessh: 1
                    javascript.0	2021-04-26 07:54:48.358	error	(22266) npm ERR! A complete log of this run can be found in: npm ERR! /home/iobroker/.npm/_logs/2021-04-26T05_54_48_349Z-debug.log
                    javascript.0	2021-04-26 07:54:48.357	error	(22266)
                    javascript.0	2021-04-26 07:54:48.348	error	(22266) ERR! 404 Not Found - GET https://registry.npmjs.org/nodessh - Not found npm ERR! 404 npm ERR! 404 'nodessh@latest' is not in the npm registry. npm ERR! 404 You should bug the author to publi
                    javascript.0	2021-04-26 07:54:48.346	error	(22266) npm
                    javascript.0	2021-04-26 07:54:48.338	error	(22266) ERR! code E404
                    javascript.0	2021-04-26 07:54:48.336	error	(22266) npm
                    javascript.0	2021-04-26 07:54:46.257	info	(22266) npm install nodessh --production (System call)
                    
                    AsgothianA 1 Reply Last reply
                    0
                    • H Hansi1234

                      Hat jemand aktuell noch ein ssh script am laufen? Ich bekomme das Modul nicht installiert:

                      javascript.0	2021-04-26 07:54:48.372	error	(22266) Cannot install nodessh: 1
                      javascript.0	2021-04-26 07:54:48.358	error	(22266) npm ERR! A complete log of this run can be found in: npm ERR! /home/iobroker/.npm/_logs/2021-04-26T05_54_48_349Z-debug.log
                      javascript.0	2021-04-26 07:54:48.357	error	(22266)
                      javascript.0	2021-04-26 07:54:48.348	error	(22266) ERR! 404 Not Found - GET https://registry.npmjs.org/nodessh - Not found npm ERR! 404 npm ERR! 404 'nodessh@latest' is not in the npm registry. npm ERR! 404 You should bug the author to publi
                      javascript.0	2021-04-26 07:54:48.346	error	(22266) npm
                      javascript.0	2021-04-26 07:54:48.338	error	(22266) ERR! code E404
                      javascript.0	2021-04-26 07:54:48.336	error	(22266) npm
                      javascript.0	2021-04-26 07:54:46.257	info	(22266) npm install nodessh --production (System call)
                      
                      AsgothianA Offline
                      AsgothianA Offline
                      Asgothian
                      Developer
                      wrote on last edited by
                      #20

                      @hansi1234 Das könnte daran liegen das das Module node-ssh heisst, nicht nodessh

                      A.

                      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                      1 Reply Last reply
                      0
                      • D Offline
                        D Offline
                        Dragon
                        wrote on last edited by
                        #21

                        Ich bekomme folgende Fehlermeldung, wenn ich das Skript starte. Hat jemand eine Idee?

                        
                        javascript.0	2021-09-28 16:22:28.756	error	(2289) at Script.runInContext (vm.js:130:18)
                        javascript.0	2021-09-28 16:22:28.755	error	(2289) at script.js.common.Automatisierung.Geräte.3D_Drucker.Shutdown_OctPi:19:3
                        javascript.0	2021-09-28 16:22:28.755	error	(2289) at script.js.common.Automatisierung.Geräte.3D_Drucker.Shutdown_OctPi:2:11
                        javascript.0	2021-09-28 16:22:28.754	error	(2289) script.js.common.Automatisierung.Geräte.3D_Drucker.Shutdown_OctPi: TypeError: node_ssh is not a constructor
                        
                        GlasfaserG 1 Reply Last reply
                        0
                        • D Dragon

                          Ich bekomme folgende Fehlermeldung, wenn ich das Skript starte. Hat jemand eine Idee?

                          
                          javascript.0	2021-09-28 16:22:28.756	error	(2289) at Script.runInContext (vm.js:130:18)
                          javascript.0	2021-09-28 16:22:28.755	error	(2289) at script.js.common.Automatisierung.Geräte.3D_Drucker.Shutdown_OctPi:19:3
                          javascript.0	2021-09-28 16:22:28.755	error	(2289) at script.js.common.Automatisierung.Geräte.3D_Drucker.Shutdown_OctPi:2:11
                          javascript.0	2021-09-28 16:22:28.754	error	(2289) script.js.common.Automatisierung.Geräte.3D_Drucker.Shutdown_OctPi: TypeError: node_ssh is not a constructor
                          
                          GlasfaserG Offline
                          GlasfaserG Offline
                          Glasfaser
                          wrote on last edited by
                          #22

                          @dragon sagte in Simple-SSH Script lässt Javascript Adapter abstürzen:

                          Automatisierung.Geräte.3D_Drucker.Shutdown_OctPi

                          Zeige mal dein Script

                          Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                          D 1 Reply Last reply
                          0
                          • GlasfaserG Glasfaser

                            @dragon sagte in Simple-SSH Script lässt Javascript Adapter abstürzen:

                            Automatisierung.Geräte.3D_Drucker.Shutdown_OctPi

                            Zeige mal dein Script

                            D Offline
                            D Offline
                            Dragon
                            wrote on last edited by
                            #23

                            @glasfaser
                            Vielen Dank für das Hilfsangebot, aber ich habe den Fehler gefunden. Er saß teilweise vor der Tastatur

                            var node_ssh = require('node-ssh').NodeSSH;
                            var ssh = new node_ssh();
                            

                            erstens das hier.
                            Zweitens: das Passwort war falsch und die IP Adresse stimmte nicht.... Vll ist es an der Zeit für heute Feierabend zu machen.... :grin:

                            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

                            488

                            Online

                            32.5k

                            Users

                            81.7k

                            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