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. 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

Geplant Angeheftet Gesperrt Verschoben JavaScript
23 Beiträge 11 Kommentatoren 3.7k Aufrufe 11 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.
  • joergeliJ joergeli

    @Asgothian
    Hi,
    danke für Deine Erläuterungen, bin halt nicht so der Linux-Crack.

    nohup kannte ich noch nicht.
    Damit sollte es möglich sein, ein bash-script zu starten, welches zuerst ein "logout" , dann "sleep" und anschl. ein "shutdown -h now" ausführt.
    Wie gesagt, simple-ssh braucht wohl ein sauberes "logout", bzw. "exit", um nicht die kpl. js-Instanz zum Absturz zu bringen.

    sudo-Kennwort:
    Das leuchtet soweit ein.
    Mich hat nur verwirrt, daß wenn ich mich via Putty als User "pi" auf dem ioBroker-Raspi einlogge, einen sudo-Befehl eingeben kann, und nicht nochmals nach dem Kennwort gefragt werde.

    Gruß
    Jörg

    AsgothianA Offline
    AsgothianA Offline
    Asgothian
    Developer
    schrieb am zuletzt editiert von
    #10

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

    @Asgothian
    Hi,
    danke für Deine Erläuterungen, bin halt nicht so der Linux-Crack.

    nohup kannte ich noch nicht.
    Damit sollte es möglich sein, ein bash-script zu starten, welches zuerst ein "logout" , dann "sleep" und anschl. ein "shutdown -h now" ausführt.
    Wie gesagt, simple-ssh braucht wohl ein sauberes "logout", bzw. "exit", um nicht die kpl. js-Instanz zum Absturz zu bringen.

    Nicht ganz. Der Ablauf wäre:

    Ein Script (shutdown_system.sh), das sleep und dann shutdown -h now macht
    Der Aufruf aus dem simple-SSH wäre nohup shutdown_system.sh && logout

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

    1 Antwort Letzte Antwort
    0
    • TeNNo2k5T Offline
      TeNNo2k5T Offline
      TeNNo2k5
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antworten Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    1
                    • H Offline
                      H Offline
                      Hansi1234
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      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
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • D Offline
                          D Offline
                          Dragon
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          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
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            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
                              schrieb am zuletzt editiert von
                              #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 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

                              362

                              Online

                              32.5k

                              Benutzer

                              81.7k

                              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