@garfonso sagte in Ports auf Online Verfügbarkeit prüfen wie ?:
@pmunz
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 :-) });
Ok, nachdem ich den Fehler auch sehen konnte, geht es nun so (mein ursprüngliches Skript war falsch):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