Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Warnings bei remote SSH Shutdown per Blockly von Windows VM

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Warnings bei remote SSH Shutdown per Blockly von Windows VM

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      Kuddel last edited by

      Hallo zusammen,

      ich schalte per Blockly eine Windows-VM aus, auf der OpenSSH läuft.

      Der Shutdown-Befehl steht in einer JS Funktion, die dann augerufen wird.

      var SSH = require('simple-ssh');
      var ssh = new SSH({
          host: '192.168.4.10',
          user: 'Mein_User',
          pass: 'Mein_PW'
      });
      ssh.exec('shutdown -s -f -t 120').start();
      

      An sich klappt alles und die VM wird auch ausgeschaltet, allerdings erhalte ich immer Fehler im Log:

      javascript.0	2022-10-11 09:53:10.472	error	Error: read ECONNRESET at TCP.onStreamRead (node:internal/stream_base_commons:217:20)
      javascript.0	2022-10-11 09:53:10.472	error	Error: read ECONNRESET
      javascript.0	2022-10-11 09:53:10.471	error	An error happened which is most likely from one of your scripts, but the originating script could not be detected.
      

      Kann jemand helfen ?

      BananaJoe 1 Reply Last reply Reply Quote 0
      • BananaJoe
        BananaJoe Most Active @Kuddel last edited by

        @kuddel du öffnest die SSH Verbindung, schließt diese aber nie. Die Verbindung ist also die ganzen 2 Minuten offen bis die VM rebootet und dadurch die Verbindung verloren geht.

        Du müsstest die Verbindung also sauber trennen oder den Fehler abfangen, siehe https://www.npmjs.com/package/simple-ssh

        Wobei ich da kein Beispiel für ein beenden sehen.
        Log doch mal auch vor der Ausführung. Wenn meine Theorie stimmt kommt die Fehlermeldung 2 Minuten nachdem du den Befehl gesendet hast.

        Trennen könnte mit exit aus der Sitzung gehen:

        ssh.exec('shutdown -s -f -t 120 && exit 0').start();
        
        K 1 Reply Last reply Reply Quote 0
        • K
          Kuddel @BananaJoe last edited by

          @bananajoe der Fehler kommt nicht erst nach 120 Sekunden, sondern direkt nach der Ausführung des Befehls.

          Ein "&& exit 0" brachte auch keine Erfolg.

          BananaJoe 1 Reply Last reply Reply Quote 0
          • BananaJoe
            BananaJoe Most Active @Kuddel last edited by BananaJoe

            @kuddel auch bei anderen Befehlen? z.B. ein echo?
            Teste doch sonst mal das Chaining command together und das Capturing error codes. bei dem Zweiten wird dann ja sogar eine Exit-Funktion gesetzt sowie der Returncode / Exit-Code des shutdown-befehls abgefangen.

            Das NPM Paket musstest du doch extra im JavaScrfipt Adapter hinzufügen, oder?

            Alternativ könntest du unter Linux (wenn dein iobroker unter Linux läuft) auch sshpass nachinstallieren und den ssh-Befehl als normalen Exec-Befehl absetzen (siehe Anleitung von sshpass)

            K 1 Reply Last reply Reply Quote 0
            • K
              Kuddel @BananaJoe last edited by

              @bananajoe vielen Dank für die Antworten.

              Ich habe den Shutdown jetzt ersteinmal wieder umgebaut und den public ssh key vom ioBroker auf der Windows VM hinterlegt, dann kann man den Shutdown direkt per Blockly ohne JS Funktion machen.

              Den Rest werde ich dann mal in Ruhe in meiner Testumgebung versuchen zu fixen

              umbm 1 Reply Last reply Reply Quote 0
              • umbm
                umbm @Kuddel last edited by

                @kuddel

                Auch wenn das Thema scgon sehr alt ist:

                Hast du inzwischen eine Lösung gefunden?
                Ich sitze zur Zeit vor der gleichen Fehlermeldung, wodurch dann der js-Adapter komplett neu startet und das Script, das den ssh-Befehl absetzt, natürlich abbricht.

                K 1 Reply Last reply Reply Quote 0
                • K
                  Kuddel @umbm last edited by

                  @umbm ich habe auf meinen ioBroker VM "sshpass" installiert.

                  Damit kannn ich im Blockly das PW mitgeben.

                  Im Exec Block steht dann folgendes:

                  sshpass -p "**********" ssh admin@192.168.4.10 shutdown -s -f  -t 120 -c 'ioBroker-Shutdown'
                  

                  Wichtig war dabei irgendwie auch, dass im Comment kein Leerzeichen stehen darf.
                  Deswegen "ioBroker-Shutdown" und nicht "ioBroker Shutdown"

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  972
                  Online

                  31.6k
                  Users

                  79.4k
                  Topics

                  1.3m
                  Posts

                  3
                  7
                  341
                  Loading More Posts
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes
                  Reply
                  • Reply as topic
                  Log in to reply
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                  The ioBroker Community 2014-2023
                  logo