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