add options source networks from netbox

This commit is contained in:
2026-05-20 14:22:25 +02:00
parent 832f3f3526
commit 3e3f233471
3 changed files with 28 additions and 0 deletions

View File

@@ -18,6 +18,10 @@ nm = nmap.PortScanner()
networks_env = os.getenv("NETWORKS", "192.168.85.0/24,192.168.86.0/24")
networks = [network.strip() for network in networks_env.split(",") if network.strip()]
# Scan source configuration: env, netbox, or mixed
scan_source = os.getenv("SCAN_SOURCE", "env").strip().lower()
netbox_prefix_status = os.getenv("NETBOX_PREFIX_STATUS", "").strip().lower()
# NetBox configuration
netbox_url = os.getenv("NETBOX_URL", "https://netbox.xxxxx.xx/")
netbox_token = os.getenv("NETBOX_TOKEN", "xxxxx")
@@ -26,6 +30,27 @@ netbox = pynetbox.api(url=netbox_url, token=netbox_token, ssl_verify=ssl_verify)
tenant = os.getenv("TENANT", "Xxxxx Praha")
def load_networks_from_netbox():
print("Loading networks from NetBox...")
prefixes = netbox.ipam.prefixes.filter(status=netbox_prefix_status) if netbox_prefix_status else netbox.ipam.prefixes.all()
networks_from_netbox = []
for prefix in prefixes:
address = getattr(prefix, 'prefix', None)
if address:
networks_from_netbox.append(address)
print(f"Found NetBox prefix: {address}")
return networks_from_netbox
if scan_source == 'netbox':
networks = load_networks_from_netbox()
elif scan_source == 'mixed':
networks = networks + load_networks_from_netbox()
if not networks:
raise ValueError('No networks configured to scan. Set NETWORKS or SCAN_SOURCE to include NetBox prefixes.')
def scan_network(network):
print(f"Scanning network: {network}")
nm.scan(hosts=network, arguments='-p 1-32768 -T4 --host-timeout 2m') # Adding a host-timeout of 2 minutes