Jey-Cee / ioBroker.net-tools

ioBroker network tools for ping, wake-on-lan and port scan.
Other
3 stars 3 forks source link

[Bug]: uncaught exception: Cannot read properties of undefined (reading 'host') #36

Closed esusxunil closed 7 months ago

esusxunil commented 8 months ago

Contact Details

sebastian.schnack@gmail.com

What happened?

The Adapter is crashing frequently and starting with a restart loop.

The startup looks good, license was accepted, port scan successful.

I use a docker container with a bridged network, that means network layer is fully accessible and older Version (below 1.0) worked without issue.

I use several VLANs, but for the beginning I just configured the IP Range from the Network the ioBroker is part of. I have some devices (IP below .20) with fixed IP Addresses like Switches and Access points, they are shown correctly. Most of the devises (80%) are missing.

I also tried to configure just a subset of IPs (.100 - .150), then some other devices show up but the adapter still crashes.

Adapter Version

1.0.6

JS-Controller Version

5.0.19

Node JS Version

18.19.1

NPM Version

10.2.4

Operating System

Debian

Relevant log output

net-tools.0
2024-03-14 18:30:04.643 info    terminating

net-tools.0
2024-03-14 18:30:04.614 error   Cannot read properties of undefined (reading 'host')

net-tools.0
2024-03-14 18:30:04.609 error   TypeError: Cannot read properties of undefined (reading 'host') at /opt/iobroker/node_modules/iobroker.net-tools/main.js:167:63 at Array.map (<anonymous>) at NetTools.onObjectChange (/opt/iobroker/node_modules/iobroker.net-tools/main.js:167:25) at NetTools.emit (node:events:517:28) at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/lib/adapter/adapter.js:8729:49) at process.processImmediate (node:internal/timers:476:21)

net-tools.0
2024-03-14 18:30:04.594 error   uncaught exception: Cannot read properties of undefined (reading 'host')

Anything else?

No response

Jey-Cee commented 8 months ago

Thank you for your report. I think the missing devices could be a result of the crash as the discovery will stop before all devices can be found. A full log from start to crash will be helpfully. Also the information if you used the discovery on device tab or automatic discovery?

esusxunil commented 8 months ago

Hi,

yes I think that the missing devices are the result of the crash - my guess that any result of the scan will effect the crash.

Here is the full log in DEBUG Mode, I used the Auto discovery mode. Other tests with manual discovery delivered the same result.

2024-03-14 21:52:21.333 - debug: net-tools.0 (29282) Redis Objects: Use Redis connection: 127.0.0.1:6379 2024-03-14 21:52:21.448 - debug: net-tools.0 (29282) Objects client ready ... initialize now 2024-03-14 21:52:21.452 - debug: net-tools.0 (29282) Objects create System PubSub Client 2024-03-14 21:52:21.454 - debug: net-tools.0 (29282) Objects create User PubSub Client 2024-03-14 21:52:22.402 - debug: net-tools.0 (29282) Objects client initialize lua scripts 2024-03-14 21:52:22.410 - debug: net-tools.0 (29282) Objects connected to redis: 127.0.0.1:6379 2024-03-14 21:52:22.433 - debug: net-tools.0 (29282) Redis States: Use Redis connection: 127.0.0.1:6379 2024-03-14 21:52:22.441 - debug: net-tools.0 (29282) States create System PubSub Client 2024-03-14 21:52:22.443 - debug: net-tools.0 (29282) States create User PubSub Client 2024-03-14 21:52:22.455 - debug: net-tools.0 (29282) States connected to redis: 127.0.0.1:6379 2024-03-14 21:52:22.608 - info: net-tools.0 (29282) starting. Version 1.0.6 in /opt/iobroker/node_modules/iobroker.net-tools, node: v18.19.1, js-controller: 5.0.19 2024-03-14 21:52:22.809 - info: net-tools.0 (29282) Scanning for open ports (20, 21, 22, 23, 25, 53, 80, 110, 119, 123, 143, 161, 162, 194, 443, 445, 3306, 3389, 5900, 6379, 8080, 8443, 9090, 9200, 9999) at localhost, please wait 2024-03-14 21:52:22.865 - info: net-tools.0 (29282) License Certificate OK 2024-03-14 21:52:22.866 - info: net-tools.0 (29282) License Key is valid 2024-03-14 21:52:22.987 - info: net-tools.0 (29282) Auto search is enabled 2024-03-14 21:52:24.996 - info: net-tools.0 (29282) Port scan finished 2024-03-14 22:00:00.044 - debug: net-tools.0 (29282) Start auto search 2024-03-14 22:00:33.560 - error: net-tools.0 (29282) uncaught exception: Cannot read properties of undefined (reading 'host') 2024-03-14 22:00:33.629 - error: net-tools.0 (29282) TypeError: Cannot read properties of undefined (reading 'host') at /opt/iobroker/node_modules/iobroker.net-tools/main.js:167:63 at Array.map () at NetTools.onObjectChange (/opt/iobroker/node_modules/iobroker.net-tools/main.js:167:25) at NetTools.emit (node:events:517:28) at Immediate. (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/lib/adapter/adapter.js:8729:49) at process.processImmediate (node:internal/timers:476:21) 2024-03-14 22:00:33.658 - error: net-tools.0 (29282) Cannot read properties of undefined (reading 'host') 2024-03-14 22:00:33.708 - error: net-tools.0 (29282) uncaught exception: Cannot read properties of undefined (reading 'host') 2024-03-14 22:00:33.709 - error: net-tools.0 (29282) TypeError: Cannot read properties of undefined (reading 'host') at /opt/iobroker/node_modules/iobroker.net-tools/main.js:167:63 at Array.map () at NetTools.onObjectChange (/opt/iobroker/node_modules/iobroker.net-tools/main.js:167:25) at NetTools.emit (node:events:517:28) at Immediate. (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/lib/adapter/adapter.js:8729:49) at process.processImmediate (node:internal/timers:476:21) 2024-03-14 22:00:33.709 - error: net-tools.0 (29282) Cannot read properties of undefined (reading 'host') 2024-03-14 22:00:33.720 - error: net-tools.0 (29282) uncaught exception: Cannot read properties of undefined (reading 'host') 2024-03-14 22:00:33.721 - error: net-tools.0 (29282) TypeError: Cannot read properties of undefined (reading 'host') at /opt/iobroker/node_modules/iobroker.net-tools/main.js:167:63 at Array.map () at NetTools.onObjectChange (/opt/iobroker/node_modules/iobroker.net-tools/main.js:167:25) at NetTools.emit (node:events:517:28) at Immediate. (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/lib/adapter/adapter.js:8729:49) at process.processImmediate (node:internal/timers:476:21) 2024-03-14 22:00:33.722 - error: net-tools.0 (29282) Cannot read properties of undefined (reading 'host') 2024-03-14 22:00:33.739 - error: net-tools.0 (29282) uncaught exception: Cannot read properties of undefined (reading 'host') 2024-03-14 22:00:33.747 - error: net-tools.0 (29282) TypeError: Cannot read properties of undefined (reading 'host') at /opt/iobroker/node_modules/iobroker.net-tools/main.js:167:63 at Array.map () at NetTools.onObjectChange (/opt/iobroker/node_modules/iobroker.net-tools/main.js:167:25) at NetTools.emit (node:events:517:28) at Immediate. (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/lib/adapter/adapter.js:8729:49) at process.processImmediate (node:internal/timers:476:21) 2024-03-14 22:00:33.747 - error: net-tools.0 (29282) Cannot read properties of undefined (reading 'host') 2024-03-14 22:00:33.755 - error: net-tools.0 (29282) uncaught exception: Cannot read properties of undefined (reading 'host') 2024-03-14 22:00:33.756 - error: net-tools.0 (29282) TypeError: Cannot read properties of undefined (reading 'host') at /opt/iobroker/node_modules/iobroker.net-tools/main.js:167:63 at Array.map () at NetTools.onObjectChange (/opt/iobroker/node_modules/iobroker.net-tools/main.js:167:25) at NetTools.emit (node:events:517:28) at Immediate. (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/lib/adapter/adapter.js:8729:49) at process.processImmediate (node:internal/timers:476:21) 2024-03-14 22:00:33.756 - error: net-tools.0 (29282) Cannot read properties of undefined (reading 'host') 2024-03-14 22:00:33.900 - info: net-tools.0 (29282) terminating 2024-03-14 22:00:33.915 - warn: net-tools.0 (29282) Terminated (UNCAUGHT_EXCEPTION): Without reason 2024-03-14 22:00:34.463 - info: net-tools.0 (29282) terminating 2024-03-14 22:00:34.749 - error: net-tools.0 (29282) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). 2024-03-14 22:00:35.047 - error: host.buanet-iobroker2 instance system.adapter.net-tools.0 terminated with code 6 (UNCAUGHT_EXCEPTION) 2024-03-14 22:01:10.040 - warn: host.buanet-iobroker2 instance system.adapter.net-tools.0 terminated due to SIGTERM

Another observation I made in the logs:

Whenever I open the Admin Page of the adapter, I will find a warning in the logs:

2024-03-14 21:51:40.427 - warn: admin.0 (13715) net-tools has an invalid jsonConfig: [{"instancePath":"/items/settings/items/interface/type","schemaPath":"#/definitions/componentType/enum","keyword":"enum","params":{"allowedValues":["alive","autocomplete","cron","fileSelector","text","textSendTo","number","port","color","checkbox","chips","header","slider","ip","user","room","func","select","icon","image","panel","password","file","sendTo","staticText","custom","pattern","table","accordion","instance","language","setState","certificate","certificates","staticImage","staticLink","divider","objectId","selectSendTo","autocompleteSendTo","checkLicense","uuid","timePicker","datePicker"]},"message":"must be equal to one of the allowed values"},{"instancePath":"/items/settings","schemaPath":"#/properties/items/patternProperties/%5E.%2B/allOf/8/if","keyword":"if","params":{"failingKeyword":"then"},"message":"must match \"then\" schema"}]

totocotonio commented 8 months ago

Hi, ich habe das gleiche Problem. Der Adapter stürzt ständig ab.

Jey-Cee commented 8 months ago

Bitte testet die version 1.0.7. Ihr könnt sie über npm installieren wenn ihr das Beta repository aktiviert.

esusxunil commented 8 months ago

Viel besser, die Fehlermeldungen sind weg, der Autoscan ist noch nicht ganz abgeschlossen, aber es tauchen schonmal eindeutig mehr Geraete auf.

Es gibt noch eon paar Warnings, gefuehlt jedes Geraet erhaelt folgende Warnung:

net-tools.0 | 2024-03-15 12:00:04.321 | warn | State "net-tools.0.e438836ef946.rps" has no existing object, this might lead to an error in future versions net-tools.0 | 2024-03-15 12:00:04.482 | warn | State "net-tools.0.e43883e6e9f5.rps" has no existing object, this might lead to an error in future versions net-tools.0 | 2024-03-15 12:00:04.547 | warn | State "net-tools.0.3eed6f3b3f05.rps" has no existing object, this might lead to an error in future versions net-tools.0 | 2024-03-15 12:00:12.942 | warn | State "net-tools.0.e43883e6e522.rps" has no existing object, this might lead to an error in future versions net-tools.0 | 2024-03-15 12:00:12.949 | warn | State "net-tools.0.e438836ef946.rps" has no existing object, this might lead to an error in future versions net-tools.0 | 2024-03-15 12:00:12.956 | warn | State "net-tools.0.e43883e6e9f5.rps" has no existing object, this might lead to an error in future versions net-tools.0 | 2024-03-15 12:00:12.960 | warn | State "net-tools.0.3eed6f3b3f05.rps" has no existing object, this might lead to an error in future versions net-tools.0 | 2024-03-15 12:00:22.559 | warn | State "net-tools.0.e43883e6e522.rps" has no existing object, this might lead to an error in future versions net-tools.0 | 2024-03-15 12:00:22.612 | warn | State "net-tools.0.e438836ef946.rps" has no existing object, this might lead to an error in future versions net-tools.0 | 2024-03-15 12:00:22.773 | warn | State "net-tools.0.e43883e6e9f5.rps" has no existing object, this might lead to an error in future versions

esusxunil commented 8 months ago

Einmal den kompletten Objektbaum loeschen hat das Problem behoben, war scheinbar noch Datenmuell vorhanden.

totocotonio commented 8 months ago

Hi, ja sieht wesentlich besser aus.

Bis jetzt keine Fehler mehr.

Mal abwarten.

totocotonio commented 8 months ago

Hi, funktioniert leider nicht.

net-tools

totocotonio commented 8 months ago

net-tools_1

Jey-Cee commented 8 months ago

@totocotonio Hast du den Objektbaum der Instantz auch gelöscht gehabt? Und wie lange lief es bvor der Fehler wieder auftratt?

totocotonio commented 8 months ago

Hi, ja ich hatte den Baum komplett gelöscht. Ich denke so ca. 5-8 min.

Dann stieg er aus und es kam die Fehlermeldung im Host.

Jey-Cee commented 8 months ago

Ok zweiter Anlauf, version 1.0.8 kann getestet werden.

totocotonio commented 8 months ago

Danke,

ok, Test läuft

totocotonio commented 8 months ago

Nein, funktioniert auch nicht.

net-tools_2

Jey-Cee commented 8 months ago

Also irgendwas stimmt nicht. Die bemängelte stelle gibt es an der Stelle gar nicht mehr. Bist du wirklich auf version 1.0.8?

totocotonio commented 8 months ago

habe es über npm installiert

npm i iobroker.net-tools

auch das brachte keinen Erfolg

npm install iobroker.net-tools

system.adapter.net-tools : net-tools - v1.0.6

Er zeigt die Ver .1.0.6 an.

Muss der iob rebootet werden?

Normal doch nicht!

totocotonio commented 8 months ago

Reboot brachte keinen Erfolg

Jey-Cee commented 8 months ago

Nö kein reboot. npm i iobroker.net-tools@1.0.8

totocotonio commented 8 months ago

Ah, ok hatte die Version nicht dabei.

Also noch ein Versuch.

totocotonio commented 8 months ago

Ok, richtige Version wird jetzt angezeigt.

Das kommt im LOg

net-tools_3

Jey-Cee commented 8 months ago

Ja das weis ich. Hab ich schon beim Admin gemeldet.

esusxunil commented 8 months ago

Ich habe auch Version 1.0.8 installiert, der Adapter laeuft (bis auf die Admin Warning) fehlerfrei.

Er findet aber relativ wenige Geraete und auch nur IPs im Subnetz bis etwa .100, obwohl das ganze Subnetz bis .255 konfiguriert ist.

Im Netzwerkbereich bis .100 werden 17 Geraete gefunden, 20 sind aber eigentlich vorhanden, alles ueber .100 wird garnicht gefunden. Wenn ich den Adapter konfiguriere, dass erst ab .100 gesucht werden soll, findet der Adapter auch Geraete in dem Bereich, aber auch nicht alle.

Ich werde mal eine tabellarische Aufstellung machen, vielleicht ergibt sich ja ein Muster.

Frage: Ueber VLANs hinweg wird grundsaetzlich nichts gefunden, gibt es da noch Moeglichekiten oder ist das einfach eine Limitierung der Suchmethode?

Tabelle:

IP                  Adapter Name    Kategorie   
192.168.1.1 Ja  Dream Machine SE    Router  
192.168.1.2 Ja  U-LTE-Pro   LTE Antenne 
192.168.1.3 Ja  Erdgeschoss Switch  
192.168.1.4 Ja  Dachgeschoss    Switch  
192.168.1.5 Ja  Versorgungsraum Switch  
192.168.1.7 Ja  Heimkino Mini   Switch  
192.168.1.8 Ja  Wohnzimmer  Access Point    
192.168.1.9 Ja  Kueche  Access Point    
192.168.1.10    Ja  Gaeste  Access Point    
192.168.1.11    Ja  Waschkueche Access Point    
192.168.1.12    Ja  Buero   Access Point    
192.168.1.13    Ja  Schlafzimmer    Access Point    
192.168.1.15    Nein    Martin Wohnzimmer   Switch  
192.168.1.16    Nein    Martin Versorgungsraum  Switch  
192.168.1.26    Ja  Google Pixel 7  Handy   
192.168.1.31    Ja  Siemens Spuelmaschine   IOT 
192.168.1.38    Nein    Apple iPad Pro  Tablet  
192.168.1.53    Ja  Shelly EM Backofen  IOT 
192.168.1.87    Ja  unbekannt   unbekannt   taucht nicht im DHCP Server auf…
192.168.1.92    Nein    DiskStation NAS (ioBroker Host) 
192.168.1.98    Ja  Schlafzimmer Harmony    IOT 
192.168.1.101   >100    VELUX KIX 300 Gateway   IOT 
192.168.1.102   >100    Google Nest Hub IOT 
192.168.1.109   >100    Busch Jaeger freeAtHome IOT 
192.168.1.119   >100    Apple iPad Air 4    Tablet  
192.168.1.124   Nein    BRWBCF4D4039D2B Laptop  
192.168.1.125   >100    Apple iPhone SE 2020    Handy   
192.168.1.146   >100    Epson Printer   Drucker 
192.168.1.148   >100    Hue Bridge  IOT 
192.168.1.156   >100    Google Nest Mini    IOT 
192.168.1.164   Nein    martinsrepeater2-1750e  Repeater    
192.168.1.168   >100    FMNB1507    Laptop  
192.168.1.171   Nein    Martins Repeater 6000   Repeater    
192.168.1.172   >100    Chromecast Kueche   IOT 
192.168.1.173   Nein    HUAWEI_P10_lite-d1fe903d6   Handy   
192.168.1.179   >100    Wohnzimmer Harmony  IOT 
192.168.1.189   Nein    Martins Enpal Wechselrichter    IOT 
192.168.1.215   >100    Fritzbox 7590   Telefon 
192.168.1.251   >100    Martins Amazon Fire TV Stick 2  IOT 
Jey-Cee commented 8 months ago

@esusxunil Grundsätzlich ist es so das man MAC Adressen nur über den ARP Cache ermitteln kann, weil man nicht ohne weiteres auf den Layer 2 des Netzwerks zugreifen kann. Jedes Gerät das im ARP cache steht kann auch vom Adapter gefunden werden. Du kannst also auch mal abgleichen ob die Geräte dort drin stehen mit dem Befehl arp in der Konsole.

Was mich jetzt interessieren würde, auf was für einem Gerät läuft dein ioBroker und wie ist die Auslastung (CPU & Netzwerk).

Hier mal mein Verständis zu VLANs: VLANs sind an sich abgeschlossene Netzwerke, daher können Geräte innerhalb eines VLANs nicht auf den Layer 2 eines anderen VLANs zugreifen. Das höchste der Gefühle wäre also dass das Gateway des VLANs die MAC Adressen eines anderen VLANs kennt. Hängt aber von der Konfiguration ab.

esusxunil commented 8 months ago

Zu den VLANs: Da könntest du Recht haben. Die MACs sind ja nur inerhalb eines Netzwerksegments sichbar. Sofern die Erkennung auf der MAC Tabelle bassiert, bleibt das wohl einfach eine Limitierung. Ich habe den ioBroker Host ins IOT VLAN (129.168.2.1/23) umgehängt, das solllte er sowieso letzendlich hin. Den Adapter wollte ich einsetzen um die Erreichbarkeit der IOT Devices zu überwachen, das würde mir also durchaus ausreichen.

Der ioBroker läuft auf einem Synology NAS in einem Docker Container - das Container Netzwerk läuft allerdings im Bridge Modus, der Container hat also vollen Zugriff aufs Netzwerk.

Netzwerkverkehr ist nicht der Rede wert, die Systemkonsole zeigt wenige kB/s an. CPU lag in dem beobachteten Zeitraum fast durchgängig bei ungefähr 25%.

Rufe ich arc in der Console des Containers - also nicht auf dem NAS, sondern wirklich im Container - dann sehe ich eine sehr lange Liste von Netzwerkgeräte, ob dort 100% enthalten weis ich nicht, aber deutlich mehr als im Adapter gefunden. Ziehe ich die unvollständigen Einträge aus der Liste ab, sind dort 84 Einträge mit IPs aus dem IOT VLAN vorhanden.

Auszug aus der Liste:

Schlafzimmer.localdomai  ether   14:ae:85:70:a4:96   C                     eth1
Google-Nest-Mini.locald  ether   20:1f:3b:81:d2:4f   C                     eth1
shellypmmini-348518e091  ether   34:85:18:e0:91:d8   C                     eth1
fritz.localdomain        ether   44:4e:6d:20:42:3d   C                     eth1
172.17.0.2               ether   02:42:ac:11:00:02   C                     docker0
192.168.3.234                    (incomplete)                              eth1
192.168.3.240            ether   04:5d:4b:b7:e3:41   C                     eth1
192.168.3.123            ether   a8:03:2a:b8:99:4c   C                     eth1

Der Adapter findet in diesem IOT Netzwerksegment sogar nur 8 Geräte mit einer IP bis 192.168.2.10 (von insgesamt eigentlich 53 Geräten)

Jey-Cee commented 8 months ago

@esusxunil wenn du bestimmte Geräte abfragen willst kannst du sie auch von Hand eintragen wenn sie nicht gefunden werden. Dazu musst halt die MAC Adresse und die IP wissen.

Ich hab eine Stelle im Code gefunden die unter Umständen dazu geführt hat das der Discovery Prozess einfach angehalten wurde, was dann logerschweise dazu führt das nur ein Teil der Geräte erkannt wurde. Das hab ich mit 1.0.9 behoben.

esusxunil commented 8 months ago

Version 1.0.9 starte bei mir nicht:

host.buanet-iobroker2
2024-03-20 15:41:26.219 error   instance system.adapter.net-tools.0 terminated with code 1 (JS_CONTROLLER_STOPPED)
host.buanet-iobroker2
2024-03-20 15:41:26.219 warn    adapter "net-tools" seems to be installed for a different version of Node.js. Trying to rebuild it... 2 attempt

Nodeversion ist v18.19.1 - in den letzten Tagen unverändert

Jey-Cee commented 8 months ago

Hm sehr seltsamm die Meldung. Ich hab gerade eine neue Version gemacht weil da plötzlich Code drin war der den Start verhindert hat, vielleicht lag es daran.

esusxunil commented 8 months ago

Version 1.0.10 gestartet, ist wieder stabil, Suche laeuft gerade, poste hier dann die Ergebnisse.

esusxunil commented 8 months ago

MIt Version 1.10 bekomme ich anscheinend alle Geraete des Subnetzes angezeigt, ich habe Sie noch nicht im Detail ausgewertet, aber die Liste ist lang, das sieht gut aus.

Mir war nur eine Anmerkung im Log aufgefallen:

net-tools.0
2024-03-22 09:30:01.241 info    Can not get mac for 192.168.2.2. Going to next IP.

net-tools.0
2024-03-22 09:30:01.899 info    MAC address for 192.168.2.2: null

Der Host 192.168.2.2 ist witzigerweise der ioBroker Host, aebr gut dass kann auch tatsaechlich am Dockercontainer liegen. Da dies eh eine feste IP ist, habe ich ihn nun manuell hinzugefuegt.