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. Ports auf Online Verfügbarkeit prüfen wie ?

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Ports auf Online Verfügbarkeit prüfen wie ?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascriptblockly
12 Beiträge 4 Kommentatoren 1.1k Aufrufe 4 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.
  • P pmunz

    Hallo,

    Gibt es vielleicht eine möglichkeit nicht nur IP-Adressen per ping port 80 zu überwachen sondern auch
    andere port`s wie zb.:
    port 443, 21, 22, 53, ....

    oder vielleicht sogar einen offiziellen oder GitHub Adapter der dies ermöglicht ?

    Spielchen wie snmp hab ich am laufen, fordert aber eingriff ins server system was ich für simple Online Status abfragen vermeiden möchte. ( Ausser Prio. Server )

    Vielen Dank

    GarfonsoG Offline
    GarfonsoG Offline
    Garfonso
    Developer
    schrieb am zuletzt editiert von Garfonso
    #2

    @pmunz
    Ping überwacht nicht Port 80.

    Du kannst doch einfach mit einem socket Verbinden. Also aus dem Kopf so ein Skript:

    const net = require('net');
    
    const ip = 192.168.0.1;
    const port = 443;
    
    const connection = net.createConnection({host: ip, port: port, timeout: 10000}, (err) => {
        if (err) {
            if (err.code === 'ECONNREFUSED') {
               //port ist zu
            } else if (err.code === 'ETIMEDOUT') {
               //gerät offline (oder firewall doof konfiguriert, dass sie nicht antwortet)
            }
        } else {
             //port ist offen
        }
        connection .destroy(); //wieder zu machen :-)
    });
    

    Ultimativer Lovelace Leitfaden: https://forum.iobroker.net/topic/35937/der-ultimative-iobroker-lovelace-leitfaden-dokumentation

    Lovelace UI Beispiele: https://forum.iobroker.net/topic/35950/zeigt-her-eure-lovelace-visualisierung

    P 2 Antworten Letzte Antwort
    0
    • GarfonsoG Garfonso

      @pmunz
      Ping überwacht nicht Port 80.

      Du kannst doch einfach mit einem socket Verbinden. Also aus dem Kopf so ein Skript:

      const net = require('net');
      
      const ip = 192.168.0.1;
      const port = 443;
      
      const connection = net.createConnection({host: ip, port: port, timeout: 10000}, (err) => {
          if (err) {
              if (err.code === 'ECONNREFUSED') {
                 //port ist zu
              } else if (err.code === 'ETIMEDOUT') {
                 //gerät offline (oder firewall doof konfiguriert, dass sie nicht antwortet)
              }
          } else {
               //port ist offen
          }
          connection .destroy(); //wieder zu machen :-)
      });
      
      P Offline
      P Offline
      pmunz
      schrieb am zuletzt editiert von
      #3

      @Garfonso
      Hallo, sorry hab ich mich falsch ausgedrückt, ich meinte der " ping Adapter " kann nur port 80 pingen und prüfen ob verfügbar.
      vielen dank für deine info , ich werd des mal testen.
      Danke

      1 Antwort Letzte Antwort
      0
      • GarfonsoG Garfonso

        @pmunz
        Ping überwacht nicht Port 80.

        Du kannst doch einfach mit einem socket Verbinden. Also aus dem Kopf so ein Skript:

        const net = require('net');
        
        const ip = 192.168.0.1;
        const port = 443;
        
        const connection = net.createConnection({host: ip, port: port, timeout: 10000}, (err) => {
            if (err) {
                if (err.code === 'ECONNREFUSED') {
                   //port ist zu
                } else if (err.code === 'ETIMEDOUT') {
                   //gerät offline (oder firewall doof konfiguriert, dass sie nicht antwortet)
                }
            } else {
                 //port ist offen
            }
            connection .destroy(); //wieder zu machen :-)
        });
        
        P Offline
        P Offline
        pmunz
        schrieb am zuletzt editiert von
        #4

        @Garfonso sagte in Ports auf Online Verfügbarkeit prüfen wie ?:

        onst net = require('net');

        hmm irgendwie bekomm ich da immer einen script fehler den ich aber mangels unwissenheil nicht finden kann:

        22:50:07.870 error javascript.0 (1203) script.js.Javascript.ping compile failed:
        at script.js.Javascript.ping:5

        GarfonsoG 1 Antwort Letzte Antwort
        0
        • P pmunz

          @Garfonso sagte in Ports auf Online Verfügbarkeit prüfen wie ?:

          onst net = require('net');

          hmm irgendwie bekomm ich da immer einen script fehler den ich aber mangels unwissenheil nicht finden kann:

          22:50:07.870 error javascript.0 (1203) script.js.Javascript.ping compile failed:
          at script.js.Javascript.ping:5

          GarfonsoG Offline
          GarfonsoG Offline
          Garfonso
          Developer
          schrieb am zuletzt editiert von
          #5

          @pmunz
          Ja, sorry, war, wie gesagt, "aus dem Kopf". Die IP muss natürlich in Anführungszeichen, also const ip = "192.168.0.1";

          Ultimativer Lovelace Leitfaden: https://forum.iobroker.net/topic/35937/der-ultimative-iobroker-lovelace-leitfaden-dokumentation

          Lovelace UI Beispiele: https://forum.iobroker.net/topic/35950/zeigt-her-eure-lovelace-visualisierung

          P 1 Antwort Letzte Antwort
          0
          • GarfonsoG Garfonso

            @pmunz
            Ja, sorry, war, wie gesagt, "aus dem Kopf". Die IP muss natürlich in Anführungszeichen, also const ip = "192.168.0.1";

            P Offline
            P Offline
            pmunz
            schrieb am zuletzt editiert von pmunz
            #6

            @Garfonso
            Hallo Garfonso,
            Danke ist ja kein problem ich bin dankbar für deine hilfe.
            Ja das mit den Anführungszeichen hätte ich auch als anfänger checken können , sorry.

            Jetzt tritt das problem auf das alle 10 sekunden auch andere Javascripts mitgezogen werden und einen reload machen und ich zb Telegram meldungen aus einem anderen script bekomme.
            das wird aber der fall sein wenn:
            solange ein Port Online ist zb.: 80 ist alles ok , ist dieser aber offline bricht die Instanz komplett ab und wird deaktiviert.

            Wo ist es mir den ersichtlich ob Online oder Offline ? ( true bei Online - false bei Offline ) unter Pbjekte / Javascript.
            Aber ich denke mal das "false" nicht kommt weil sich ja das Script / die Instanz beendet.
            Den Port 8090 hab ich nur eingetragen um zu sehen was passiert wenn der port nicht anspricht.

            Fehlermeldungen aus dem log :

            instance system.adapter.javascript.0 terminated with code 1 (JS_CONTROLLER_STOPPED)
            Caught by controller[0]: at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)
            Caught by controller[0]: Error: connect ECONNREFUSED 10.10.80.25:8090
            (25987) uncaught exception: connect ECONNREFUSED 10.10.80.25:8090

            GarfonsoG 2 Antworten Letzte Antwort
            0
            • P pmunz

              Hallo,

              Gibt es vielleicht eine möglichkeit nicht nur IP-Adressen per ping port 80 zu überwachen sondern auch
              andere port`s wie zb.:
              port 443, 21, 22, 53, ....

              oder vielleicht sogar einen offiziellen oder GitHub Adapter der dies ermöglicht ?

              Spielchen wie snmp hab ich am laufen, fordert aber eingriff ins server system was ich für simple Online Status abfragen vermeiden möchte. ( Ausser Prio. Server )

              Vielen Dank

              ? Offline
              ? Offline
              Ein ehemaliger Benutzer
              schrieb am zuletzt editiert von
              #7

              @pmunz unter Linux in der Konsole macht man das normal mit nmap ...

              1 Antwort Letzte Antwort
              0
              • P pmunz

                @Garfonso
                Hallo Garfonso,
                Danke ist ja kein problem ich bin dankbar für deine hilfe.
                Ja das mit den Anführungszeichen hätte ich auch als anfänger checken können , sorry.

                Jetzt tritt das problem auf das alle 10 sekunden auch andere Javascripts mitgezogen werden und einen reload machen und ich zb Telegram meldungen aus einem anderen script bekomme.
                das wird aber der fall sein wenn:
                solange ein Port Online ist zb.: 80 ist alles ok , ist dieser aber offline bricht die Instanz komplett ab und wird deaktiviert.

                Wo ist es mir den ersichtlich ob Online oder Offline ? ( true bei Online - false bei Offline ) unter Pbjekte / Javascript.
                Aber ich denke mal das "false" nicht kommt weil sich ja das Script / die Instanz beendet.
                Den Port 8090 hab ich nur eingetragen um zu sehen was passiert wenn der port nicht anspricht.

                Fehlermeldungen aus dem log :

                instance system.adapter.javascript.0 terminated with code 1 (JS_CONTROLLER_STOPPED)
                Caught by controller[0]: at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)
                Caught by controller[0]: Error: connect ECONNREFUSED 10.10.80.25:8090
                (25987) uncaught exception: connect ECONNREFUSED 10.10.80.25:8090

                GarfonsoG Offline
                GarfonsoG Offline
                Garfonso
                Developer
                schrieb am zuletzt editiert von Garfonso
                #8

                @pmunz

                komisch... das Problem hatte ich hier nicht. Also der Port war nie online?
                //Edit: Ok, auf der Konsole hatte ich das Problem nicht, da ging das mit dem Fehler abfangen so. Im Adapter hab ich dasselbe Problem. Spanned. Mal untersuchen. ;-)

                Eigentlich sollte das auch nicht passieren. Kannst du mir sagen, welche Version von js-controller und javascript Adapter du hast?

                Ultimativer Lovelace Leitfaden: https://forum.iobroker.net/topic/35937/der-ultimative-iobroker-lovelace-leitfaden-dokumentation

                Lovelace UI Beispiele: https://forum.iobroker.net/topic/35950/zeigt-her-eure-lovelace-visualisierung

                1 Antwort Letzte Antwort
                0
                • P pmunz

                  @Garfonso
                  Hallo Garfonso,
                  Danke ist ja kein problem ich bin dankbar für deine hilfe.
                  Ja das mit den Anführungszeichen hätte ich auch als anfänger checken können , sorry.

                  Jetzt tritt das problem auf das alle 10 sekunden auch andere Javascripts mitgezogen werden und einen reload machen und ich zb Telegram meldungen aus einem anderen script bekomme.
                  das wird aber der fall sein wenn:
                  solange ein Port Online ist zb.: 80 ist alles ok , ist dieser aber offline bricht die Instanz komplett ab und wird deaktiviert.

                  Wo ist es mir den ersichtlich ob Online oder Offline ? ( true bei Online - false bei Offline ) unter Pbjekte / Javascript.
                  Aber ich denke mal das "false" nicht kommt weil sich ja das Script / die Instanz beendet.
                  Den Port 8090 hab ich nur eingetragen um zu sehen was passiert wenn der port nicht anspricht.

                  Fehlermeldungen aus dem log :

                  instance system.adapter.javascript.0 terminated with code 1 (JS_CONTROLLER_STOPPED)
                  Caught by controller[0]: at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)
                  Caught by controller[0]: Error: connect ECONNREFUSED 10.10.80.25:8090
                  (25987) uncaught exception: connect ECONNREFUSED 10.10.80.25:8090

                  GarfonsoG Offline
                  GarfonsoG Offline
                  Garfonso
                  Developer
                  schrieb am zuletzt editiert von Garfonso
                  #9

                  @pmunz
                  Ok, nachdem ich den Fehler auch sehen konnte, geht es nun so (mein ursprüngliches Skript war falsch):

                  const net = require('net');
                  
                  const ip = "192.168.0.1";
                  const port = 80;
                  
                  const connection = net.createConnection({host: ip, port: port, timeout: 10000});
                  connection.on('ready', () => {
                      log("Port offen");
                      connection .destroy(); //wieder zu machen :-)
                  });
                  connection.on('error', (e) => {
                      log("Error: " + e.code);
                      if (e.code === 'ECONNREFUSED') {
                          log("Port zu");
                      } if (e.code === 'EHOSTUNREACH') {
                          log("Gerät offline 2");
                      } else {
                          log("Anderer Fehler, vermutlich Gerät nicht da?");
                      }
                      connection .destroy(); //wieder zu machen :-)
                  });
                  connection.on('timeout', () => {
                      log("Gerät offline");
                      connection .destroy(); //wieder zu machen :-)
                  });
                  

                  Den "timout" Fall hatte ich bisher nicht. Könnte aber theoretisch auftreten. Ich hatte im Fall, dass es an der IP gar kein Gerät gab den "EHOSTUNREACH" fall. Am besten wäre für den Fall, dass das Gerät gar nicht da ist eine Funktion zu definieren und die aufzurufen (falls der Fall für dich überhaupt relevant ist).

                  //Edit:
                  achja, damit das sinnvoll ist, also ein Status überwacht wird oder so, müsstest du den ganzen "connection" Block noch regelmäßig aufrufen also mit setTimeout oder schedule oder sowas (keine Ahnung, was du genau vorhast.. ggf. kannst du auch aus einem anderen Skript heraus das Skript aktivieren und am Ende des Skripts es sich selber deaktivieren lassen, das mache ich hin und wieder).

                  Ultimativer Lovelace Leitfaden: https://forum.iobroker.net/topic/35937/der-ultimative-iobroker-lovelace-leitfaden-dokumentation

                  Lovelace UI Beispiele: https://forum.iobroker.net/topic/35950/zeigt-her-eure-lovelace-visualisierung

                  P M 2 Antworten Letzte Antwort
                  0
                  • GarfonsoG Garfonso

                    @pmunz
                    Ok, nachdem ich den Fehler auch sehen konnte, geht es nun so (mein ursprüngliches Skript war falsch):

                    const net = require('net');
                    
                    const ip = "192.168.0.1";
                    const port = 80;
                    
                    const connection = net.createConnection({host: ip, port: port, timeout: 10000});
                    connection.on('ready', () => {
                        log("Port offen");
                        connection .destroy(); //wieder zu machen :-)
                    });
                    connection.on('error', (e) => {
                        log("Error: " + e.code);
                        if (e.code === 'ECONNREFUSED') {
                            log("Port zu");
                        } if (e.code === 'EHOSTUNREACH') {
                            log("Gerät offline 2");
                        } else {
                            log("Anderer Fehler, vermutlich Gerät nicht da?");
                        }
                        connection .destroy(); //wieder zu machen :-)
                    });
                    connection.on('timeout', () => {
                        log("Gerät offline");
                        connection .destroy(); //wieder zu machen :-)
                    });
                    

                    Den "timout" Fall hatte ich bisher nicht. Könnte aber theoretisch auftreten. Ich hatte im Fall, dass es an der IP gar kein Gerät gab den "EHOSTUNREACH" fall. Am besten wäre für den Fall, dass das Gerät gar nicht da ist eine Funktion zu definieren und die aufzurufen (falls der Fall für dich überhaupt relevant ist).

                    //Edit:
                    achja, damit das sinnvoll ist, also ein Status überwacht wird oder so, müsstest du den ganzen "connection" Block noch regelmäßig aufrufen also mit setTimeout oder schedule oder sowas (keine Ahnung, was du genau vorhast.. ggf. kannst du auch aus einem anderen Skript heraus das Skript aktivieren und am Ende des Skripts es sich selber deaktivieren lassen, das mache ich hin und wieder).

                    P Offline
                    P Offline
                    pmunz
                    schrieb am zuletzt editiert von
                    #10

                    @Garfonso
                    Hallo,
                    Ich habe mir vor Jahren ein PHP Scrip geschrieben das nichts anderes macht als Ports zu Pingen um zu sehen ob der Service läuft oder nicht, ich weis das ist nicht die perfekte lösung nur für die kleinen Devices extra einen snmp zu installiren ( am zu überwachenden Device ) macht keinen sinn.
                    Ich bin Jahrelang mit dem php script durch gekommen wollte es halt jetzt einfach in den iobroker übernehmen.
                    Vielen dank für deine Hilfe

                    GarfonsoG 1 Antwort Letzte Antwort
                    0
                    • P pmunz

                      @Garfonso
                      Hallo,
                      Ich habe mir vor Jahren ein PHP Scrip geschrieben das nichts anderes macht als Ports zu Pingen um zu sehen ob der Service läuft oder nicht, ich weis das ist nicht die perfekte lösung nur für die kleinen Devices extra einen snmp zu installiren ( am zu überwachenden Device ) macht keinen sinn.
                      Ich bin Jahrelang mit dem php script durch gekommen wollte es halt jetzt einfach in den iobroker übernehmen.
                      Vielen dank für deine Hilfe

                      GarfonsoG Offline
                      GarfonsoG Offline
                      Garfonso
                      Developer
                      schrieb am zuletzt editiert von
                      #11

                      @pmunz
                      Gerne. :-)
                      Du könntest auch mit exec das PHP Skript aus ioBroker raus aufrufen. Aber das ist ein gewisses Sicherheitsrisiko (weil man das Skript theoretisch austauschen könnte, je nach Berechtigungen).

                      Wenn du noch weitere Hilfe brauchst, frag ruhig.

                      Ultimativer Lovelace Leitfaden: https://forum.iobroker.net/topic/35937/der-ultimative-iobroker-lovelace-leitfaden-dokumentation

                      Lovelace UI Beispiele: https://forum.iobroker.net/topic/35950/zeigt-her-eure-lovelace-visualisierung

                      1 Antwort Letzte Antwort
                      0
                      • GarfonsoG Garfonso

                        @pmunz
                        Ok, nachdem ich den Fehler auch sehen konnte, geht es nun so (mein ursprüngliches Skript war falsch):

                        const net = require('net');
                        
                        const ip = "192.168.0.1";
                        const port = 80;
                        
                        const connection = net.createConnection({host: ip, port: port, timeout: 10000});
                        connection.on('ready', () => {
                            log("Port offen");
                            connection .destroy(); //wieder zu machen :-)
                        });
                        connection.on('error', (e) => {
                            log("Error: " + e.code);
                            if (e.code === 'ECONNREFUSED') {
                                log("Port zu");
                            } if (e.code === 'EHOSTUNREACH') {
                                log("Gerät offline 2");
                            } else {
                                log("Anderer Fehler, vermutlich Gerät nicht da?");
                            }
                            connection .destroy(); //wieder zu machen :-)
                        });
                        connection.on('timeout', () => {
                            log("Gerät offline");
                            connection .destroy(); //wieder zu machen :-)
                        });
                        

                        Den "timout" Fall hatte ich bisher nicht. Könnte aber theoretisch auftreten. Ich hatte im Fall, dass es an der IP gar kein Gerät gab den "EHOSTUNREACH" fall. Am besten wäre für den Fall, dass das Gerät gar nicht da ist eine Funktion zu definieren und die aufzurufen (falls der Fall für dich überhaupt relevant ist).

                        //Edit:
                        achja, damit das sinnvoll ist, also ein Status überwacht wird oder so, müsstest du den ganzen "connection" Block noch regelmäßig aufrufen also mit setTimeout oder schedule oder sowas (keine Ahnung, was du genau vorhast.. ggf. kannst du auch aus einem anderen Skript heraus das Skript aktivieren und am Ende des Skripts es sich selber deaktivieren lassen, das mache ich hin und wieder).

                        M Offline
                        M Offline
                        michihorn
                        schrieb am zuletzt editiert von michihorn
                        #12

                        @garfonso sagte in Ports auf Online Verfügbarkeit prüfen wie ?:

                        @pmunz
                        Ok, nachdem ich den Fehler auch sehen konnte, geht es nun so (mein ursprüngliches Skript war falsch):

                        const net = require('net');
                        
                        const ip = "192.168.0.1";
                        const port = 80;
                        
                        const connection = net.createConnection({host: ip, port: port, timeout: 10000});
                        connection.on('ready', () => {
                            log("Port offen");
                            connection .destroy(); //wieder zu machen :-)
                        });
                        connection.on('error', (e) => {
                            log("Error: " + e.code);
                            if (e.code === 'ECONNREFUSED') {
                                log("Port zu");
                            } if (e.code === 'EHOSTUNREACH') {
                                log("Gerät offline 2");
                            } else {
                                log("Anderer Fehler, vermutlich Gerät nicht da?");
                            }
                            connection .destroy(); //wieder zu machen :-)
                        });
                        connection.on('timeout', () => {
                            log("Gerät offline");
                            connection .destroy(); //wieder zu machen :-)
                        });
                        

                        Den "timout" Fall hatte ich bisher nicht. Könnte aber theoretisch auftreten. Ich hatte im Fall, dass es an der IP gar kein Gerät gab den "EHOSTUNREACH" fall. Am besten wäre für den Fall, dass das Gerät gar nicht da ist eine Funktion zu definieren und die aufzurufen (falls der Fall für dich überhaupt relevant ist).

                        //Edit:
                        achja, damit das sinnvoll ist, also ein Status überwacht wird oder so, müsstest du den ganzen "connection" Block noch regelmäßig aufrufen also mit setTimeout oder schedule oder sowas (keine Ahnung, was du genau vorhast.. ggf. kannst du auch aus einem anderen Skript heraus das Skript aktivieren und am Ende des Skripts es sich selber deaktivieren lassen, das mache ich hin und wieder).

                        Hallo, ich möchte gerne wisssen, wie ich permanent die Port prüfen kann. Das Script oben läuft offenbar nur einmal, oder? Ich habe das mal mit Schedule gemacht.

                        schedule("*/1 * * * *", function () {
                        

                        Gruß Michael

                        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

                        317

                        Online

                        32.6k

                        Benutzer

                        82.3k

                        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