Automatisiertes IT-Inventar mit Bash, Nmap & Flask: Mein CMDB-Projekt

In jedem gewachsenen IT-Netzwerk ist es früher oder später unverzichtbar, eine zentrale Übersicht über alle Geräte zu haben – wer steht wo, mit welcher IP, welchem MAC und ist wann zuletzt aufgetaucht? Genau dafür habe ich ein leichtgewichtiges, automatisiertes System entwickelt, das auf bewährten Tools wie Bash, nmap, Python und Flask basiert: CMDB Scan- & Web-Dienst.

Was macht das Tool?

Mein Projekt ist ein automatisierter Netzwerk-Scanner mit Weboberfläche und Reporting-Tool, speziell entwickelt für den Betrieb in kleinen bis mittelgroßen Netzwerken. Der Dienst besteht aus drei Kernkomponenten:

  • – Scan-Service: Regelmäßige, konfigurierbare Netzwerkscans via nmap
  • – Web-Frontend: Anzeige aller erkannten Geräte im Browser (Flask)
  • – CLI-Reporting: Berichte und CSV-Exports direkt im Terminal

Das Tool ist auf maximale Transparenz, einfache Konfiguration und Betriebssystemunabhängigkeit ausgelegt. Es läuft unter Linux/macOS – getestet u. a. auf einem Raspberry Pi und einem vServer.

Tech-Stack & Architektur

Das Projekt setzt auf etablierte Open-Source-Komponenten:

  • – nmap fĂĽr die Netzwerkerkennung
  • – psutil zur Systeminformation
  • – Python 3 + Flask fĂĽr Webinterface & Backend
  • – MySQL/MariaDB als Daten-Backend
  • – Bash-Skripte fĂĽr Automatisierung & Systemintegration
  • – Systemd-Support fĂĽr automatischen Start

Die Architektur ist modular aufgebaut – Web, Scan und Reporting laufen getrennt und können auch auf verschiedenen Hosts ausgeführt werden. Ebenfalls ist es möglich mehrere Scanner (Instanzen) parallel laufen zu lassen.

Aktuell ist das Projekt bei github.com im Status PRIVATE. Wer Interesse daran hat meldet sich einfach bei mir

Installation in 2 Minuten

git clone https://github.com/gkellershs/cmdb.git
cd cmdb
chmod +x *.sh
./install_cmdb.sh

Das Skript erstellt ein Virtualenv, installiert alle Abhängigkeiten und bereitet Konfigurationsdateien vor.
FĂĽr ein produktives Setup einfach scan_loop.sh und start-app.sh als systemd-Dienste einbinden:

sudo ./install_systemd_cmdb.sh install

Fertig – der Scan läuft nun automatisch im Hintergrund und das Webinterface ist erreichbar.

Konfiguration: Klar & Textbasiert

Alle wichtigen Einstellungen erfolgen ĂĽber einfache .cfg-Dateien im config/-Ordner:

  • – subnet.cfg – Welche Netze sollen gescannt werden
  • – hosts.cfg / mac.cfg – Manuelle Hostnamen-Zuordnung
  • – cmdb.cfg – Datenbank, Pfade, Logging

Mitgelieferte .template-Dateien machen den Einstieg leicht – das Setupskript setup-config.sh erstellt bei Bedarf eine Startkonfiguration.

Webinterface & Features

Weboberfläche

Die Weboberfläche ist minimalistisch, aber funktional:

  • – Geräte-Ăśbersicht nach Standort/Subnetz
  • – CSV-Export fĂĽr Excel & Co.
  • – Echtzeit-Interaktion mit JS (Filterung/Sortierung)
  • – Logging zur Fehlerdiagnose

Reporting per CLI

Für Admins, die lieber auf der Konsole arbeiten, gibt’s report.py. Damit lassen sich Geräte nach Standort, MAC oder IP filtern, als Tabelle anzeigen oder exportieren – ideal für tägliche Checks oder Inventarlisten.

Lessons Learned

Einige Dinge, die du beim Einsatz beachten solltest:

  • – MAC-Erkennung nur im Layer2-Bereich: Wird ĂĽber VPN oder Routing gearbeitet, sind MAC-Adressen nicht sichtbar.
  • – Multi-Host-fähig: Mehrere Scanner können parallel betrieben werden – ideal bei Standortvernetzungen.
  • – Root erforderlich: FĂĽr vollständigen Netzwerkzugriff muss das Skript als root ausgefĂĽhrt werden.

Lizenz & Mitmachen

Das Projekt steht unter der MIT-Lizenz. Du findest den kompletten Code auf GitHub:
👉 https://github.com/gkellershs/cmdb
Ich freue mich ĂĽber Feedback, Feature-Ideen oder Pull Requests!

Kurzfassung