🚀 Professionelle Netzwerk-Dokumentation für Ihr Unternehmen?
Vereinbaren Sie ein unverbindliches Strategiegespräch
📊 Business Value
Dieses Tool automatisiert die Verarbeitung von Nmap-Netzwerk-Scans: Aus rohen XML-Dateien werden strukturierte CSV-Daten extrahiert und mit bestehenden Excel-Inventarlisten abgeglichen.
XML → CSV
Extrahiert MAC-Adressen, IPv4 und Hostnamen aus Nmap-XML-Scans. Filtert gezielt nach Ihrer Domain (.int.bynature.com).
Excel-Sync
Aktualisiert bestehende Excel-Inventarlisten mit neuen MAC-Adressen via pandas-Merge. Fehlende IPs werden automatisch in Tabelle 10 gesammelt.
IT-Security
Erkennt neue, unbekannte Geräte im Netzwerk. Ideal für Security-Audits und Compliance-Dokumentation.
💻 Zwei-Stufen-Workflow
Das System besteht aus zwei unabhängigen Python-Skripten für einen zweistufigen Prozess.
main.py – XML Parser
Parse nmapscan.xml mit xml.etree.ElementTree. Filtert Hostnames auf *.int.bynature.com. Export als output.csv mit MAC, IPv4, Hostname.
add_mac.py – Excel Updater
Liest Network_Devices.xlsx mit mehreren Sheets. Merged MAC-Adressen aus CSV per IPv4-Match. Fehlende IPs in Tabelle 10.
Deduplizierung
Automatische Bereinigung von IPv4-Adressen (strip, lower). Nur eindeutige, neue Einträge werden hinzugefügt.
📝 Echte Code-Snippets
XML-Parsing mit gezielter Hostname-Filterung:
def parse_xml_to_csv(xml_file, csv_file):
tree = ET.parse(xml_file)
root = tree.getroot()
with open(csv_file, 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['MAC Address', 'IPv4', 'Hostname'])
for host in root.findall('host'):
mac = ipv4 = hostname = None
for addr in host.findall('address'):
if addr.get('addrtype') == 'mac':
mac = addr.get('addr')
elif addr.get('addrtype') == 'ipv4':
ipv4 = addr.get('addr')
for name in host.find('hostnames').findall('hostname'):
if '.int.bynature.com' in name.get('name'):
hostname = name.get('name')
Excel-Merge mit pandas für MAC-Adress-Synchronisation:
for sheet_name in xls.sheet_names:
df = pd.read_excel(xls, sheet_name=sheet_name)
if 'IPv4 Adress' in df.columns:
df['IPv4 Adress'] = df['IPv4 Adress'].str.strip().str.lower()
updated_df = pd.merge(df, csv_data, on='IPv4 Adress',
how='left', suffixes=('', '_new'))
updated_df['MAC Adress'] = updated_df.apply(
lambda row: row['MAC Adress_new']
if pd.notna(row['MAC Adress_new']) else row['MAC Adress'], axis=1
)
Fehlende IPs sammeln für manuelle Nachbearbeitung:
missing_ips = all_csv_ips - found_ips
if missing_ips:
missing_df = csv_data[csv_data['IPv4 Adress'].isin(missing_ips)]
if 'Tabelle 10' in writer.sheets:
startrow = writer.sheets['Tabelle 10'].max_row
else:
startrow = 0
missing_df.to_excel(writer, sheet_name='Tabelle 10',
startrow=startrow, index=False)
🔧 Technologie-Stack
Python 3
xml.etree.ElementTree
pandas
openpyxl
csv
Nmap
Excel
🚀 Kernfunktionen
- XML-Parsing: Verarbeitung großer Nmap-XML-Dateien mit ET.parse()
- MAC-Extraktion: Gezielte Extraktion von addrtype='mac' aus address-Elementen
- Domain-Filter: Nur Hostnames mit .int.bynature.com werden exportiert
- CSV-Export: Strukturierter Output mit MAC Address, IPv4, Hostname
- Excel-Integration: Multi-Sheet-Excel mit pandas-Merge für MAC-Adress-Updates
- Delta-Erkennung: Automatische Sammlung unbekannter IPs in separatem Sheet