diff --git a/fhem/FHEM/74_Nmap.pm b/fhem/FHEM/74_Nmap.pm index 67b1aa997..c6a2e8008 100644 --- a/fhem/FHEM/74_Nmap.pm +++ b/fhem/FHEM/74_Nmap.pm @@ -29,17 +29,6 @@ package main; use Blocking; - use Nmap::Parser; - - # my $rc = eval{ - # require Nmap::Parser; - # Nmap::Parser->import(); - # 1; - # }; - # - # return("Error loading Nmap::Parser. Maybe this module is not installed?") - # unless($rc); - # forward declarations ######################################################## sub Nmap_Initialize($); @@ -87,8 +76,18 @@ sub Nmap_Initialize($) { sub Nmap_Define($$) { my ($hash, $def) = @_; my ($SELF, $TYPE, $targets) = split(/[\s]+/, $def, 3); + my $rc = eval{ + require Nmap::Parser; + Nmap::Parser->import(); + 1; + }; - return "Usage: define $TYPE " if(!$targets); + return( + "Error loading Nmap::Parser. Maybe this module is not installed? " + . "\nUnder debian (based) system it can be installed using " + . "\n\"apt-get install libnmap-parser-perl\"" + ) unless($rc); + return("Usage: define $TYPE ") if(!$targets); my $interval = AttrVal($SELF, "interval", 900); $interval = 900 if(!looks_like_number($interval)); @@ -435,14 +434,7 @@ sub Nmap_done($) { && AttrVal($SELF, "keepReadings", 0) == 0 ){ delete $knownHosts{$oldMetaReading}; - delete $hash->{READINGS}{$oldMetaReading."_alias"}; - delete $hash->{READINGS}{$oldMetaReading."_hostname"}; - delete $hash->{READINGS}{$oldMetaReading."_ip"}; - delete $hash->{READINGS}{$oldMetaReading."_lastSeen"}; - delete $hash->{READINGS}{$oldMetaReading."_macAddress"}; - delete $hash->{READINGS}{$oldMetaReading."_macVendor"}; - delete $hash->{READINGS}{$oldMetaReading."_state"}; - delete $hash->{READINGS}{$oldMetaReading."_uptime"}; + CommandDeleteReading(undef, "$SELF $oldMetaReading.*"); Log3($SELF, 4, "$TYPE ($SELF) - delete old host: $oldMetaReading"); } @@ -606,8 +598,9 @@ sub Nmap_updateUptime($$;$) { Prerequisites:
    The "Nmap" program and the Perl module "Nmap::Parser" are required.
    - Under Debian (based) system, these can be installed using "apt-get - install nmap libnmap-parser-perl". + Under Debian (based) system, these can be installed using + "apt-get install nmap libnmap-parser-perl" + .

@@ -635,15 +628,15 @@ sub Nmap_updateUptime($$;$) {
  • clear readings
    Deletes all readings except "state". -

  • +
  • deleteOldReadings <s>
    Deletes all readings older than <s> seconds. -

  • +
  • interrupt
    Cancels a running scan. -

  • +
  • statusRequest
    Starts a network scan. @@ -651,98 +644,100 @@ sub Nmap_updateUptime($$;$) {
    Readings
    -
    - General Readings:
      -
    • - NmapVersion
      - The version number of the installed Nmap program. -

    • -
    • - hostsScanned
      - The number of scanned addresses. -

    • -
    • - hostsUp
      - The number of available network devices. -

    • -
    • - knownHosts
      - The number of known network devices. -

    • -
    • - scanDuration
      - The scan time in seconds. -

    • -
    • - state
      -
        -
      • - Initialized
        - Nmap has been defined or enabled. -

      • -
      • - running
        - A network scan is running. -

      • -
      • - done
        - Network scan completed successfully. -

      • -
      • - aborted
        - The network scan was aborted due to a timeout or by the user. -

      • -
      • - disabled
        - Nmap has been disabled. -
      • -
      -

    • -
    - Host-specific readings: -
      -
    • - <metaReading>_alias
      - Alias ​​which is specified under the attribute "devAlias" for the - network device. If no alias is specified, the hostname is displayed. -

    • -
    • - <metaReading>_hostname
      - Hostname of the network device. If this can not be determined, the IPv4 - address is displayed. -

    • -
    • - <metaReading>_ip
      - IPv4 address of the network device. -

    • -
    • - <metaReading>_lastSeen
      - The time at which the network device was last seen as. -

    • -
    • - <metaReading>_macAddress
      - MAC address of the network device. This can only be determined if the - scan is executed with root privileges. -

    • -
    • - <metaReading>_macVendor
      - Probable manufacturer of the network device. This can only be - determined if the scan is executed with root privileges. -

    • -
    • - <metaReading>_state
      - State of the network device. Can be either "absent" or "present". -

    • -
    • - <metaReading>_uptime
      - Time in seconds since the network device is reachable. -

    • -
    • - <metaReading>_uptimeText
      - Time in "d days, hh hours, mm minutes, ss seconds" since the network - device is reachable. -
    • + General Readings: +
        +
      • + NmapVersion
        + The version number of the installed Nmap program. +
      • +
      • + hostsScanned
        + The number of scanned addresses. +
      • +
      • + hostsUp
        + The number of available network devices. +
      • +
      • + knownHosts
        + The number of known network devices. +
      • +
      • + scanDuration
        + The scan time in seconds. +
      • +
      • + state
        +
          +
        • + Initialized
          + Nmap has been defined or enabled. +
        • +
        • + running
          + A network scan is running. +
        • +
        • + done
          + Network scan completed successfully. +
        • +
        • + aborted
          + The network scan was aborted due to a timeout or by the user. +
        • +
        • + disabled
          + Nmap has been disabled. +
        • +
        +
      • +
      +
      + Host-specific readings: +
        +
      • + <metaReading>_alias
        + Alias ​​which is specified under the attribute "devAlias" for the + network device. If no alias is specified, the hostname is displayed. +
      • +
      • + <metaReading>_hostname
        + Hostname of the network device. If this can not be determined, the IPv4 + address is displayed. +
      • +
      • + <metaReading>_ip
        + IPv4 address of the network device. +
      • +
      • + <metaReading>_lastSeen
        + The time at which the network device was last seen as. +
      • +
      • + <metaReading>_macAddress
        + MAC address of the network device. This can only be determined if the + scan is executed with root privileges. +
      • +
      • + <metaReading>_macVendor
        + Probable manufacturer of the network device. This can only be + determined if the scan is executed with root privileges. +
      • +
      • + <metaReading>_state
        + State of the network device. Can be either "absent" or "present". +
      • +
      • + <metaReading>_uptime
        + Time in seconds since the network device is reachable. +
      • +
      • + <metaReading>_uptimeText
        + Time in "d days, hh hours, mm minutes, ss seconds" since the network + device is reachable. +
      • +

    Attribute @@ -755,17 +750,17 @@ sub Nmap_updateUptime($$;$) { "absent". If this attribute is set to a value >1, the reading "<metaReading>_state" remains on "present" until the final status changes to "absent". -

  • +
  • args <args>
    Arguments for the Nmap scan.
    The default is "-sn". -

  • +
  • deleteOldReadings <s>
    After a network scan, all host-specific readings older than <s> seconds are deleted -

  • +
  • devAlias <ID>:<ALIAS> <ID2>:<ALIAS2> ... @@ -788,45 +783,45 @@ sub Nmap_updateUptime($$;$) { attr <name> devAlias 192.168.1.130:Michaels_Handy_byIP
    -

  • +
  • disable 1
    A running scan is canceled and no new scans are started. -

  • +
  • excludeHosts <target specification>
    All target hosts in the <target specification> are skipped during the scan. -

  • +
  • interval <seconds>
    Interval in seconds in which the scan is performed.
    The default value is 900 seconds and the minimum value is 30 seconds. -

  • +
  • keepReadings 1
    If a new IP address is recognized for a device with a known MAC address, the invalid readings are deleted unless this attribute is set. -

  • +
  • leadingZeros 1
    For the readings, the IPv4 addresses are displayed with leading zeros. -

  • +
  • metaReading <metaReading>
    You can specify "alias", "hostname", "ip" or "macAddress" as <metaReading> and is the identifier for the readings.
    The default is "ip". -

  • +
  • path
    Path under which the Nmap program is to be reached.
    The default is "/urs/bin/nmap". -

  • +
  • readingFnAttributes -

  • +
  • sudo 1
    The scan runs with root privileges.
    @@ -896,15 +891,15 @@ sub Nmap_updateUptime($$;$) {
  • clear readings
    Löscht alle Readings außer "state". -

  • +
  • deleteOldReadings <s>
    Löscht alle Readings die älter sind als <s> Sekunden. -

  • +
  • interrupt
    Bricht einen laufenden Scan ab. -

  • +
  • statusRequest
    Startet einen Netzwerkscan. @@ -912,101 +907,103 @@ sub Nmap_updateUptime($$;$) {
    Readings
    -
    - Allgemeine Readings:
      -
    • - NmapVersion
      - Die Versionsnummer des installierten Nmap Programms. -

    • -
    • - hostsScanned
      - Die Anzahl der gescannten Adressen. -

    • -
    • - hostsUp
      - Die Anzahl der erreichbaren Netzwerkgeräte. -

    • -
    • - knownHosts
      - Die Anzahl der bekannten Netzwerkgeräte. -

    • -
    • - scanDuration
      - Die Scan-Dauer in Sekunden. -

    • -
    • - state
      -
        -
      • - Initialized
        - Nmap wurde definiert oder enabled. -

      • -
      • - running
        - Ein Netzwerkscan wird ausgeführt. -

      • -
      • - done
        - Der Netzwerkscan wurde erfolgreich abgeschlossen. -

      • -
      • - aborted
        - Der Netzwerkscan wurde aufgrund einer Zeitüberschreitung oder - durch den Benutzer abgebrochen. -

      • -
      • - disabled
        - Nmap wurde deaktiviert. -
      • -
      -

    • -
    - Hostspezifische Readings: -
      -
    • - <metaReading>_alias
      - Alias welcher unter dem Attribut "devAlias" für das Netzwerkgerät - angegeben ist. Ist kein Alias angegeben wird der Hostname angezeigt. -

    • -
    • - <metaReading>_hostname
      - Hostname des Netzwerkgeräts. Kann dieser nicht ermittel werden - wird die IPv4-Adresse angezeigt. -

    • -
    • - <metaReading>_ip
      - IPv4-Adresse des Netzwerkgeräts. -

    • -
    • - <metaReading>_lastSeen
      - Der Zeitpunkt zu dem das Netzwerkgerät das letzte mal als gesehen - wurde. -

    • -
    • - <metaReading>_macAddress
      - MAC-Adresse des Netzwerkgeräts. Diese kann nur ermittelt werden, - wenn der Scan mit Root-Rechten ausgeführt wird. -

    • -
    • - <metaReading>_macVendor
      - Vermutlicher Hersteller des Netzwerkgeräts. Dieser kann nur - ermittelt werden, wenn der Scan mit Root-Rechten ausgeführt wird. -

    • -
    • - <metaReading>_state
      - Status des Netzwerkgeräts. Kann entweder "absent" oder "present" - sein. -

    • -
    • - <metaReading>_uptime
      - Zeit in Sekunden seit der das Netzwerkgerät erreichbar ist. -

    • -
    • - <metaReading>_uptimeText
      - Zeit in "d days, hh hours, mm minutes, ss seconds" seit der das - Netzwerkgerät erreichbar ist. -
    • + Allgemeine Readings: +
        +
      • + NmapVersion
        + Die Versionsnummer des installierten Nmap Programms. +
      • +
      • + hostsScanned
        + Die Anzahl der gescannten Adressen. +
      • +
      • + hostsUp
        + Die Anzahl der erreichbaren Netzwerkgeräte. +
      • +
      • + knownHosts
        + Die Anzahl der bekannten Netzwerkgeräte. +
      • +
      • + scanDuration
        + Die Scan-Dauer in Sekunden. +
      • +
      • + state
        +
          +
        • + Initialized
          + Nmap wurde definiert oder enabled. +
        • +
        • + running
          + Ein Netzwerkscan wird ausgeführt. +
        • +
        • + done
          + Der Netzwerkscan wurde erfolgreich abgeschlossen. +
        • +
        • + aborted
          + Der Netzwerkscan wurde aufgrund einer Zeitüberschreitung oder + durch den Benutzer abgebrochen. +
        • +
        • + disabled
          + Nmap wurde deaktiviert. +
        • +
        +
      • +
      +
      + Hostspezifische Readings: +
        +
      • + <metaReading>_alias
        + Alias welcher unter dem Attribut "devAlias" für das Netzwerkgerät + angegeben ist. Ist kein Alias angegeben wird der Hostname angezeigt. +
      • +
      • + <metaReading>_hostname
        + Hostname des Netzwerkgeräts. Kann dieser nicht ermittel werden + wird die IPv4-Adresse angezeigt. +
      • +
      • + <metaReading>_ip
        + IPv4-Adresse des Netzwerkgeräts. +
      • +
      • + <metaReading>_lastSeen
        + Der Zeitpunkt zu dem das Netzwerkgerät das letzte mal als gesehen + wurde. +
      • +
      • + <metaReading>_macAddress
        + MAC-Adresse des Netzwerkgeräts. Diese kann nur ermittelt werden, + wenn der Scan mit Root-Rechten ausgeführt wird. +
      • +
      • + <metaReading>_macVendor
        + Vermutlicher Hersteller des Netzwerkgeräts. Dieser kann nur + ermittelt werden, wenn der Scan mit Root-Rechten ausgeführt wird. +
      • +
      • + <metaReading>_state
        + Status des Netzwerkgeräts. Kann entweder "absent" oder "present" + sein. +
      • +
      • + <metaReading>_uptime
        + Zeit in Sekunden seit der das Netzwerkgerät erreichbar ist. +
      • +
      • + <metaReading>_uptimeText
        + Zeit in "d days, hh hours, mm minutes, ss seconds" seit der das + Netzwerkgerät erreichbar ist. +
      • +

    Attribute @@ -1020,17 +1017,17 @@ sub Nmap_updateUptime($$;$) { geändert wird. Wenn dieses Attribut auf einen Wert >1 gesetzt ist, verbleibt das Reading "<metaReading>_state" auf "present", bis der Status final auf "absent" wechselt. -

  • +
  • args <args>
    Argumente für den Nmap-Scan.
    Die Vorgabe ist "-sn". -

  • +
  • deleteOldReadings <s>
    Nach einem Netzwerkscan werden alle hostspezifischen Readings, die älter sind als <s> Sekunden, gelöscht -

  • +
  • devAlias <ID>:<ALIAS> <ID2>:<ALIAS2> ... @@ -1055,50 +1052,50 @@ sub Nmap_updateUptime($$;$) { attr <name> devAlias 192.168.1.130:Michaels_Handy_byIP
    -

  • +
  • disable 1
    Ein laufender Scan wird abgebrochen und es werden keine neuen Scans gestartet. -

  • +
  • excludeHosts <target specification>
    In der <target specification> stehen alle Zielhosts, die beim Scan übersprungen werden sollen. -

  • +
  • interval <seconds>
    Intervall in Sekunden in dem der Scan durchgeführt wird.
    Der Vorgabewert ist 900 Sekunden und der Mindestwert 30 Sekunden. -

  • +
  • keepReadings 1
    Wird für ein Gertät mit bekannter MAC-Adresse eine neue IP-Adresse erkannt, werden die ungültig gewordenen Readings gelöscht es sei denn dieses Attribut ist gesetzt. -

  • +
  • leadingZeros 1
    Bei den Readings-Namen werden die IPv4-Adressen mit führenden Nullen dargestellt. -

  • +
  • metaReading <metaReading>
    Als <metaReading> kann "alias", "hostname", "ip" oder "macAddress" angegeben werden und ist der Bezeichner für die Readings.
    Die Vorgabe is "ip". -

  • +
  • path
    Pfad unter dem das Nmap Programm zu erreichen ist.
    Die Vorgabe ist "/urs/bin/nmap". -

  • +
  • readingFnAttributes -

  • +
  • sudo 1
    Der Scan wird mit Root-Rechten ausgeführt.