FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: supernova1963 am 05 Juni 2017, 13:13:03

Titel: Benötige Perl- bzw. Modul- Hilfe
Beitrag von: supernova1963 am 05 Juni 2017, 13:13:03
Vorab, dies sind meinen ersten Geh-Versuche mit Perl. Ich bitte um Nachsicht und bin für jeden Rat und jede Tat dankbar.
Ich weiß auch, dass das Thema Netzwerk-Scanner nicht neu ist. igami hat z.B. das offizielles Nmap - Modul dafür entwickelt. Es funktioniert hervorragend und ich bewundere seine Fähigkeiten ein solches Modul zu entwicklen.
Die readingsgroup Aufbereitungen für das Nmap Modul und die Möglichkeiten des overlook fing Tools inspirierten mich zu nachstehendem alternativen Ansatz. 

Auf Basis eines im Hintergrund laufenden "fing-Discovery-Scans" werden
Diese Dummies (NetClients) werden auf Basis ihrer MAC-Adresse benannt und erhalten
Stellt das Notify fest, dass Scan von off auf Quick geändert wurde, wird, wenn ein Interval in Sekunden angegeben wurde ein relatives "at" definiert, dass in den angegebenen Zeitintervallen, einen "QuickScan" ausführt, um für diesen NetClient weitere Informationen zu holen (fing-Scan). Ist das Interval = 0, dann wird der QuickScan nur einmalig ausgeführt. Für den, - noch nicht abgeschlossenen -, DeepThought-Scan (z.B. auf Basis von nmap) soll das Handling vergleichbar erfolgen.

Warum ich overlook fing gewählt habe:
Warum ich das hier überhaupt einstelle:

Damit ich es von PC, iPDA usw. dokumentieren konnte , - und aus purer Neugier -, habe ich den derzeit aktuellen Stand hier: https://github.com/supernova1963/fhem-netClients abgelegt.

Für Anregungen, Ratschläge und Tips wäre ich dankbar,

Gernot 

Titel: Antw:Benötige Perl- bzw. Modul- Hilfe
Beitrag von: KernSani am 05 Juni 2017, 14:01:14
Hi,

danke, dass du hier dein Modul vorstellst. Dabei handelt es sich aber nicht um eine Anfängerfrage, sondern um einen "Codeschnipsel". Verschiebst du den Post dahin? (Button ganz unten links)
Titel: Antw:Benötige Perl- bzw. Modul- Hilfe
Beitrag von: igami am 05 Juni 2017, 20:46:32
Ich habe es mir noch nicht angeguckt, sondern nur deinen Text hier gelesen. Da es ja recht ähnlich zum Nmap Modul ist kann ich dir gerne dabei helfen ein Modul daraus zu machen.

Soweit ich verstanden habe wird für jede MAC Adresse im Netzwerk ein eigenes Device angelegt.
In diesem device gibt es dann Readings über den Status (up|down) und offene Ports?
Es gibt ein set für WOL?

Versuch doch bitte mal noch ein bisschen mehr zu beschreiben, was man mit fing machen kann.
In dem Nmap Modul nutze ich ja auch nur einen ganz kleinen Teil von Nmap um einen Netzwerkstatus in FHEM abzubilden
Titel: Antw:Benötige Perl- bzw. Modul- Hilfe
Beitrag von: supernova1963 am 05 Juni 2017, 22:42:05
Hallo igami,

du kennst wahrscheinlich fing für iOS oder Android. Das ist grafisch aufbereitet die Funktionen von fing für die Befehlszeile ( windows, OS X, Linux).
Das Besondere ist die Geschwindigkeit und der geringe Ressourcenbedarf, sowie die Möglichkeiten der Pflege über die .properties unter Ubuntu im Verzeichnis /etc/fing.
Da ich keine geeignete Beschreibung gefunden habe, hier eine Möglichkeit den Befehl zu konfigurieren über die --interactive Option:


fhem@FHEM:~$ sudo fing --interactive

=== overlook fing 3.0 - www.overlooksoft.com ===

  This interactive procedure will guide you through available options.
  When multiple choices are presented, press one of the letters in brackets.
  Press <CTRL^C> to exit, press <Enter> for default answer and <?> to ask
  for help.

Do you want to (D)iscover, (S)can, (F)ingbox, (P)ing or display (I)nfos?
> D
Which network shall be monitored? Type a letter or a network.
  (A) enp0s5
      192.168.1.11/24 - Ethernet
>
How many rounds?
>
Do you want to discover domain names, (Y)es or (N)o?
> Y
Choose the file name to persist your discovery session.
You may specify absolute paths. Type <Enter> for none.
>
Do you want a (L)og or (T)able output?
> L
Which format do you prefer (csv, text)?
> csv
Do you want to send the output to the (C)onsole or a (F)ile?
> C           
Do you want to add another output, (Y)es or (N)o?
> N

=== You have completed the procedure ===

  The equivalent command is:
  fing -o log,csv,console

Do you execute it now, (Y)es or (N)o?
>
Titel: Antw:Benötige Perl- bzw. Modul- Hilfe
Beitrag von: supernova1963 am 06 Juni 2017, 16:29:50
Hallo igami,

hier eine etwas ausführlichere Beschreibung.
Dein Angebot zur Unterstützung bei der Erstellung eines Moduls wird wohl an meinen bescheidenen Fähigkeiten scheitern. Die Beschreibung zur Erstellung habe ich bereits vergeblich versucht zu verstehen. Mit allen Verständnis für die Notwendigkeit, haben mir neben dem ganzen "ge-hash-e" die restriktiven Anforderungen an Aufbau, Stil und Sprache so imponiert, dass ich es verworfen habe, einen weiteren Gedanken daran zu verlieren.
Mein Plan war 2 Module zu verwenden.
Das erste "NetClientControl - Modul" sollte alles rund um den zur Verfügung stellen und steuerbar sein.
Das zweite Modul wäre dann das eigentliche "NetClient - Modul" mit Voreinstellungen

Also, ich, Modulentwickler, nicht vorstellbar, aber -tester, gerne.
Wenn es für derartige Funktionen genügend Interessent gibt, wird sich hoffentlich ein "Wissender" finden, der es so oder ganz anders umsetzt.

LG

Gernot


overlook fing - Funktionen:

fhem@FHEMDEV:~$ sudo fing --help

=== overlook fing 3.0 - www.overlooksoft.com ===

Command line options:
  -h [ --help ]            show this help message
  -v [ --version ]         show fing version
  -i [ --info ]            show network informations
  -n [ --netdiscover ] arg run network discovery
  -s [ --servicescan ] arg run service scan on host/network
  -o [ --output ] arg      use output setup for discovery/scan/ping
  -P [ --profile ] arg     use specific discovery/scan/ping profile
  -d [ --rdns ] arg        enable/disable reverse DNS lookups
  -r [ --rounds ] arg      number of rounds (network discovery)
  --session arg            use specific discovery session file
  --silent                 force to silent mode
  --interactive            start the interactive mode
  -p [ --ping ] arg        run icmp ping on the hosts
  --sentinel               run Fingbox Sentinel
  -w [ --wol ] arg         send wake on lan on targets



(D)iscover
Beispiel: Discover, Log, Hostnames, csv, console
fhem@FHEMDEV:~$ sudo fing -o log,csv,console
13:53:10 > Discovery profile: Default discovery profile
13:53:10 > Discovery class:   data-link (data-link layer)
13:53:10 > Discovery on:      192.168.178.0/24

13:53:10 > Discovery round starting.
2017/06/06 13:53:10;up;192.168.178.33;;FHEMDEV;00:1C:42:00:00:00;Parallels, Inc.
2017/06/06 13:53:10;up;192.168.178.1;;fritz.box;BC:05:43:00:00:00;AVM GmbH
13:53:10 > Discovery progress 25%
2017/06/06 13:53:10;up;192.168.178.145;;MacBook.fritz.box;9C:F3:00:00:00:00;Apple, Inc.
2017/06/06 13:53:10;up;192.168.178.179;;Gernots-Air.fritz.box;2C:F0:00:00:0:00;Apple, Inc.
2017/06/06 13:53:10;up;192.168.178.159;;iPhone-Gerd.fritz.box;CC:08:00:00:00:00;Apple, Inc.
13:53:12 > Discovery progress 50%
2017/06/06 13:53:12;up;192.168.178.50;;;1C:1A:C0:00:00:00;Apple, Inc.
13:53:12 > Discovery progress 75%
13:53:14 > Discovery round completed in 4.840 seconds.
13:53:14 > Network 192.168.178.0/24 has 6/6 hosts up.

13:53:14 > Next round starting at 13:54:10. Press Ctrl^C to exit.

2017/06/06 13:53:22;up;192.168.178.139;iPhone_Gernot;iPhone-Gernot.fritz.box;80:BE:05:00:00:00;Apple, Inc.
13:54:10 > Discovery round starting.
13:54:10 > Discovery progress 25%
13:54:12 > Discovery progress 50%
13:54:13 > Discovery progress 75%
13:54:15 > Discovery round completed in 4.967 seconds.
13:54:15 > Network 192.168.178.0/24 has 7/7 hosts up.

13:54:15 > Next round starting at 13:55:10. Press Ctrl^C to exit.


(S)can
Beispiel 2: Scan, csv, console
fhem@FHEMDEV:~$ sudo fing -s 192.168.178.1 -o csv,console
14:51:30 > Service scan on: 192.168.178.1

14:51:30 > Service scan starting.
14:51:30 > Detected MAC address: BC:05:43:00:00:00
14:51:30 > Detected service:    21 (ftp)
14:51:30 > Detected service:    53 (domain)
14:51:30 > Detected service:    80 (http)
14:51:30 > Detected service:   139 (netbios-ssn)
14:51:30 > Detected service:   445 (microsoft-ds)
14:51:30 > Detected service:  5060 (sip)
14:51:31 > Service scan completed in 1.003 seconds.

192.168.178.1;21;TCP;ftp;File Transfer Protocol
192.168.178.1;53;TCP;domain;Domain Name Server
192.168.178.1;80;TCP;http;World Wide Web HTTP
192.168.178.1;139;TCP;netbios-ssn;NETBIOS Session Service
192.168.178.1;445;TCP;microsoft-ds;SMB directly over IP
192.168.178.1;5060;TCP;sip;Session Initiation Protocol (SIP)


Beispiel 3: (P)ing:
fhem@FHEMDEV:~$ sudo fing -p 192.168.178.1 -o csv,console
14:55:09 > Ping reply from 192.168.178.1 in 17 ms
14:55:09 > Ping reply from 192.168.178.1 in 27 ms
14:55:09 > Ping reply from 192.168.178.1 in 46 ms
14:55:10 > Ping reply from 192.168.178.1 in 79 ms
14:55:10 > Ping reply from 192.168.178.1 in 79 ms

192.168.178.1;49;;17;79


Beispiel 4: (I)nfos:
fhem@FHEMDEV:~$ sudo fing -i
Local network interfaces:
enp0s5:
Type:             Ethernet
Hardware address: 00:1C:42:00:00:00
Vendor:           Parallels, Inc.
IP address:       192.168.178.33/24 [192.168.178.255]
IP address:       FE80:0000:0000:0000:021C:42FF:0000:0000/128

Default gateway:
192.168.178.1


Beispiel 5: (W)ake on lan: fhem@FHEM:~$ sudo fing -w ?

16:23:21 > Error: invalid MAC address in ?

Wake On Lan syntax:
  MACAddress[@network[:port]]
  MACAddress[@host[:port]]

E.g.:
  fing --wol 010203040506
  fing --wol 01:02:03:04:05:06@192.168.0.1/24
  fing --wol 010203040506@myremoterouter.com:9


Ich lege eine aktualisierte Herstellerliste, ein Beispiel für an FHEM angepaßte Services und Discover-Einstellungen mit Musterangaben von zu scannenden Ports an.
Ich möchte aber unbedingt darauf hinweisen, dass