NEWS
NMAP liefert im ioBroker falsches Ergebnis
-
Im Badezimmer verwende ich einen Echo, welcher mit Lichtschalter gekoppelt ist.
Ziel ist es, wenn das Badezimmerlicht angeht, daß in bestimmter Radiosender gespielt wird.Ich verwende unter ioBroker ein Javascript (von @ruhr70), um Amazon-Echo's im Netz zu prüfen, ob diese in Netzwerk verfügbar sind - in dem Script wird nmap verwendet.
Bei einem Echo (im Büro) funktioniert es auch gut, beim Echo im Badezimmer liefert nmap jedoch im ioBroker-Script ein falsches Ergebnis.
Im Terminal des ioBroker-Docker wird der gleiche Befehl abgesetzt und liefert jedoch das erwünschte Ergebnis.in den Alexa2-Objekten ist auch der Echo zu finden und kann angesteuert werden (z.B: Pause)
Hat jemand eine Idee, woran das liegen kann?
Das Ergebnis aus dem Log im ioBroker (Scripte):
13:35:02.081 info javascript.0 (2110) script.js.AlexaEcho.CheckAlexaEchoBad: Abfrage : nmap 192.168.8.230 -sT -A -T5 --top-ports=20 13:35:02.082 info javascript.0 (2110) script.js.AlexaEcho.CheckAlexaEchoBad: Starting Nmap 7.70 ( https://nmap.org ) at 2021-12-29 13:35 CET Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn Nmap done: 1 IP address (0 hosts up) scanned in 2.04 seconds 13:35:02.082 info javascript.0 (2110) script.js.AlexaEcho.CheckAlexaEchoBad: Scan Amazon Echo :OG Bad: 13:35:02.082 info javascript.0 (2110) script.js.AlexaEcho.CheckAlexaEchoBad: Alexa Echo Mac-Adresse: n.e. 13:35:02.082 info javascript.0 (2110) script.js.AlexaEcho.CheckAlexaEchoBad: up: false 13:35:02.082 info javascript.0 (2110) script.js.AlexaEcho.CheckAlexaEchoBad: Latency: n.e.
Das Ergebnis im Terminal:
root@buanet-iobroker:/opt/iobroker# nmap 192.168.8.230 -sT -A -T5 --top-ports=20 Starting Nmap 7.70 ( https://nmap.org ) at 2021-12-29 13:36 CET Nmap scan report for xx-xx-xx-xx-xx-xx (192.168.8.230) Host is up (0.040s latency). PORT STATE SERVICE VERSION 21/tcp filtered ftp 22/tcp filtered ssh 23/tcp filtered telnet 25/tcp filtered smtp 53/tcp filtered domain 80/tcp filtered http 110/tcp filtered pop3 111/tcp filtered rpcbind 135/tcp filtered msrpc 139/tcp filtered netbios-ssn 143/tcp filtered imap 443/tcp filtered https 445/tcp filtered microsoft-ds 993/tcp filtered imaps 995/tcp filtered pop3s 1723/tcp filtered pptp 3306/tcp filtered mysql 3389/tcp filtered ms-wbt-server 5900/tcp filtered vnc 8080/tcp filtered http-proxy MAC Address: xx-xx-xx-xx-xx-xx (Unknown) Too many fingerprints match this host to give specific OS details Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 39.69 ms xx-xx-xx-xx-xx-xx (192.168.8.230) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 5.95 seconds
Hier das Script:
// Prüft die Verfügbarkeit eines Amazon Echos im Netz bei bekannter IP-Adresse // Rückmeldung der Prüfung etwas > 10 Sekunden // Voraussetzungen: // -------------------------- // nmap muss installiert sein // IP-Adresse in der "abfrage" anpassen var alexaName = "OG Bad"; var alexaIP = "192.168.8.230"; var logOn = true; // Logausgabe im Skript var forecreation = false; // true: Datenpunkte werden überschrieben (ween z.B. Bezeichnungen geändert wurden) var pfad = "Systeminfos.Alexa.Echo OG Badezimmer" + "."; // Pfad in dem die Datenpunkte angelegt werden // Datenpunktnamen: var idEchoUp = pfad + 'up'; var idEchoLatency = pfad + "latency"; var idEchoStatustime = pfad + "timestamp"; var idMacAddress = pfad + "mac address"; // regelmässige Wiederholungen der Abfrage var cronStr = "*/1 * * * *"; var abfrage = 'nmap '+alexaIP+' -sT -A -T5 --top-ports=20'; //var abfrage = 'nmap '+alexaIP+' -sT -A -n -T4 --top-ports=20'; // ----------------------------------------------------------------------------- createState(idEchoUp, false, forecreation, { name: 'Alexa Echo '+alexaName+' up', desc: 'Alexa Echo '+alexaName+' up', type: 'boolean', unit: '', role: 'value' }); createState(idEchoLatency, "initalisiert", forecreation, { name: 'Alexa Echo '+alexaName+' Latency', desc: 'Alexa Echo '+alexaName+' Latency', type: 'string', unit: '', role: 'value' }); createState(idEchoStatustime, now(), forecreation, { name: 'Alexa Echo '+alexaName+' letzter Status', desc: 'Alexa Echo '+alexaName+' letzter Status', type: 'string', unit: '', role: 'value' }); createState(idMacAddress, "initalisiert", forecreation, { name: 'Alexa Echo '+alexaName+' Mac Adresse', desc: 'Alexa Echo '+alexaName+' Mac Adresse', type: 'string', unit: '', role: 'value' }); // ----------------------------------------------------------------------------- function now() { return formatDate(new Date(), "hh:mm:ss, YYYY-MM-DD"); } function abfrageConsole() { exec(abfrage, function(err, stdout, stderr) { if(logOn) log("Abfrage : "+abfrage); if (err) { log("Fehler Amazon Echo Scan: " + err,"error"); return; } var out = stdout.toString(); if(logOn) log(out); if(!out || (!out.match("Host is up") && !out.match("Host seems down"))) log("Amazon Echo Scan unklares Ergebnis","warn"); var up = false; var latency = "n.e."; var mac = "n.e."; if (out.match("Host is up")) { up = true; latency = out.match(/\(.+latency/g); latency = latency.toString().replace(/ latency/,""); latency = latency.toString().replace("(",""); //mac = out.match(/..:..:..:..:..:../g).toString(); //mac = out.match(/..-..-..-..-..-../g).toString(); // ..:..:..:..:..:.. } setState(idEchoUp ,up); setState(idEchoLatency ,latency); setState(idEchoStatustime ,now()); setState(idMacAddress ,mac); if(logOn) log("Scan Amazon Echo :"+alexaName+": "); if(logOn) log("Alexa Echo Mac-Adresse: " + mac); if(logOn) log("up: " + up); if(logOn) log("Latency: " + latency); }); } function abfragen() { abfrageConsole(); } // regelmässige Wiederholungen // ----------------------------------------------------------------------------- schedule(cronStr, abfragen); // main // ----------------------------------------------------------------------------- function main() { abfragen(); } // Start Skript: // ----------------------------------------------------------------------------- setTimeout(main, 500);
MOD-EDIT: zum dritten Mal den Code in code-tags gesetzt!!!
-
@eggi sagte in NMAP liefert im ioBroker falsches Ergebnis:
Hat jemand eine Idee, woran das liegen kann?
nmap reagiert anders, jenachdem ob es als root läuft oder von einem user ohne weitere Rechte aufgerufen wird.
-
@thomas-braun
Danke für Deinen Hinweis:
Wie kann man die Rechte prüfen bzw. passend einstellen.Als Hinweis:
Auf dem Echo-Dot mit der IP-Adresse 192.168.8.230 funktioniert es nicht;
auf einem Echo-Show5 mit der IP-Adresse 192.168.8.225 im gleichen Netz geht es