Added nmap integration (closes #99)

This commit is contained in:
Fabio Manganiello 2020-01-11 18:51:54 +01:00
parent 1e342cc8a5
commit f5b010c15c
5 changed files with 41 additions and 0 deletions

View file

@ -0,0 +1,5 @@
``platypush.plugins.nmap``
==========================
.. automodule:: platypush.plugins.nmap
:members:

View file

@ -78,6 +78,7 @@ Plugins
platypush/plugins/music.rst
platypush/plugins/music.mpd.rst
platypush/plugins/music.snapcast.rst
platypush/plugins/nmap.rst
platypush/plugins/pihole.rst
platypush/plugins/ping.rst
platypush/plugins/printer.cups.rst

30
platypush/plugins/nmap.py Normal file
View file

@ -0,0 +1,30 @@
from typing import Dict, Any
from platypush.plugins import Plugin, action
class NmapPlugin(Plugin):
"""
Nmap network scanner/mapper integration.
"""
def __init__(self, **kwargs):
super().__init__(**kwargs)
@action
def scan(self, hosts: str, ports: str, args: str, sudo: bool = False) -> Dict[str, Any]:
"""
Perform a port scan towards a certain host or network.
:param hosts: Host name/IP or IP subnet to scan (e.g. ``192.168.1.0/24``).
:param ports: Port number, (comma-separated) list or (dash-separated) range to scan (default: all).
:param args: Additional command line arguments for nmap.
:param sudo: Execute nmap as root through sudo (default: ``False``).
:return: Scan results, as an ip -> host map.
"""
import nmap
nm = nmap.PortScanner()
return nm.scan(hosts=hosts, ports=ports, arguments=args, sudo=sudo).get('scan')
# vim:sw=4:ts=4:et:

View file

@ -221,3 +221,6 @@ croniter
# py-cpuinfo
# psutil
# Support for nmap integration
# python-nmap

View file

@ -275,5 +275,7 @@ setup(
'graphite': ['graphyte'],
# Support for CPU and memory monitoring and info
'sys': ['py-cpuinfo', 'psutil'],
# Support for nmap integration
'nmap': ['python-nmap'],
},
)