Automatisierter CSV-Export aus der CMDB i-doit

Arbeiten Sie häufig mit CSV-Dateien? Wie Sie diese CSV-Daten automatisch in i-doit importieren, haben wir Ihnen bereits vorgestellt. Heute gehen wir den umgekehrten Weg und zeigen Ihnen, wie Sie automatisiert Daten als CSV-Datei aus i-doit exportieren.

 

Je nachdem, an welche Tools Sie Daten übergeben möchten, können diese über den Report Manager im Vorfeld zusammengestellt und dann über die Kommandozeile automatisiert als CSV-Datei erzeugt werden.

In unserem folgenden Beispiel generieren wir eine Liste aller unserer Server mit IP-Adresse, Hostname, Standort und Betriebssystem als CSV-Datei. Diese Liste wird alle 3 Minuten automatisch aktualisiert.

Vorbereitung

Daten in Report zusammenstellen

Im ersten Schritt werden die Daten, die später in der CSV-Datei vorhanden sein sollen, in einem Bericht zusammengestellt. Dieser kann über die grafische Oberfläche von i-doit mit dem Report Manager erstellt werden.

Report Kategorie anlegen

Wir empfehlen bei Berichten, die für Automationen genutzt werden, eine eigene Report-Kategorie zu erstellen und den Zugriff auf diese Reports über das Berechtigungssystem zu beschränken. Wenn ein Anwender an diesem Bericht aus Unwissenheit Änderungen durchführt, wirkt sich das auch direkt auf die dahinterliegende Automation aus.

In dieser Kategorie erstellen Sie nun einen neuen Report. Dieser muss alle Informationen beinhalten, die später in der CSV-Datei enthalten sein sollen. Je nachdem, welcher Wert an welcher Position benötigt wird, können Sie die Kategoriebilder weiter nach oben oder unten verschieben.

Auf Basis des oben genannten Beispiels sieht der Bericht nun folgendermaßen aus:

Report-Ansicht im Report Manager

Wenn dieser Bericht nun aufgerufen wird, sollte er in der gewünschten Form angezeigt werden.

Ausgeführter Report

Benutzer anlegen

Legen Sie einen neuen Benutzer an, der später für den Export der CSV „zuständig“ ist. Als Bezeichnung für diesen Benutzer vergeben Sie z. B. “Systemuser CSV Export” oder kurz: su-csv-export.

Neuen Benutzer in i-doit anlegen

Vergeben Sie in der Kategorie einen Benutzernamen und ein sicheres Passwort. Dieser Benutzer wird später ausschließlich für die Generierung der CSV zuständig sein. Nur dieser Nutzer ist dazu berechtigt, Dateien aus Reports zu erstellen. So wird für eine klare Trennung und ein höheres Sicherheitsniveau gesorgt.

Berechtigungen vergeben

Im nächsten Schritt müssen wir dem neu erstellten Nutzer nun noch Zugriff auf die Funktion “Report export” erteilen. Dafür wechseln wir in die Verwaltung und rufen hier das Rechtesystem auf. Unter dem Punkt “Administration” vergeben wir für den eben erstellten Benutzer das Recht “ReportExportCommand”.

Berechtigungen in i-doit vergeben

Die CSV-Datei erzeugen

Nun geht es auf die CLI, um den automatischen CSV-Export zu konfigurieren. Dazu werden wir im ersten Schritt eine neue Konfigurationsdatei erstellen. Prüfen Sie bitte im Vorfeld, wie der Pfad zu ihrem Installationsverzeichnis von i-doit tatsächlich ist. Je nach Distribution und eigenen Anforderungen kann dieses Abweichen (z.B. /var/www/html/i-doit/ statt /var/www/html/)

sudo nano /var/www/html/src/handler/config/csv-export.ini

In dieser Datei werden wir nun die Konfigurationeigenschaften des CSV-Exports festlegen. Dazu hinterlegen wir die Zugangsdaten des zuvor erstellten Benutzers “su-export-csv”. Die tenantId ist sofern Sie nicht mehrere Mandanten nutzen immer die 1. Die Report-ID finden Sie in der Übersicht des Report Managers. Der exportPath und exportFilename gibt an, wohin die csv-Datei gespeichert und wie deren Bezeichnung sein soll. Der exportFileType spezifiziert den Dateityp.

[commandArguments]
[commandOptions]
user=su-csv-export
password=123456
tenantId=1
reportId=74
exportPath=/var/www/html/
exportFilename=Report-Server
exportFileType=csv

Sichern Sie die Datei mit Strg+O. Im Anschluss wird mit Strg+X die Bearbeitung verlassen.

Diese Konfiguration können Sie nun einfach testen. Dazu führen Sie über die Konsole die Konfigurationsdatei mit folgendem Befehl aus:

sudo -u www-data php /var/www/html/console.php report-export -c /var/www/html/src/handler/config/csv-export.ini

Tritt hier ein Fehler auf und der Befehl wird nicht ausgeführt, liegt das häufig daran, dass PHP nicht im Standardverzeichnis liegt. Prüfen Sie in diesem Fall bitte, an welchem Ort PHP auf Ihrem System liegt. Meist ist „/usr/bin/php“ das richtige Verzeichnis. Dies ist jedoch von der verwendeten Linux-Distribution und der Installation abhängig. Eine einfache Methode, um den Installationspfad zu ermitteln, ist der Befehl „whereis php“. 

admin@linux: whereis php
php: /usr/bin/php7.4 /usr/bin/php /usr/lib/php /etc/php /usr/include/php /usr/share/php7.4-ldap /usr/share/php7.4-gd /usr/share/php7.4-xml /usr/share/php7.4-mysql /usr/share/php7.4-opcache /usr/share/php7.4-common /usr/share/php7.4-mbstring /usr/share/php7.4-pgsql /usr/share/php7.4-readline /usr/share/php7.4-bcmath /usr/share/php /usr/share/php7.4-zip /usr/share/php7.4-curl /usr/share/php7.4-soap /usr/share/php7.4-json /usr/share/man/man1/php.1.gz

Im Anschluss ergänzen Sie den Pfad zu PHP:

sudo -u www-data /usr/bin/php /var/www/html/console.php report-export -c /var/www/html/src/handler/config/csv-export.ini

Der Bericht wird nun generiert und im Hauptverzeichnis gespeichert. Rufen Sie die CSV-Datei über https://ihr-server.domain/Report-Server.csv auf.

Cronjob anlegen

Die manuelle Erzeugung des Berichtes funktioniert nun. Die Anforderung war jedoch, einen automatisierten Export zu realisieren. Dazu legen Sie nun einen Cronjob an.

Wechseln Sie in das Verzeichnis /etc/cron.d/ und erstellen eine neue Datei „csv-export“.

cd /etc/cron.d/
sudo nano csv-export

Hier legen Sie nun einen neuen Cronjob an:

*/3 * * * * www-data /usr/bin/php /var/www/html/console.php report-export -c /var/www/html/src/handler/config/csv-export.ini >/dev/null 2>&1

Dieser Cronjob wird nun alle 3 Minuten ausgeführt. Die resultierende CSV-Datei wird mit jeder Ausführung überschrieben. Je nach Anwendungsfall kann diese Zeit in jede Richtung korrigiert werden. Häufig sind tagesaktuelle Daten ausreichend. In diesem Fall legen Sie einen Cronjob an, der z. B. am Morgen um 05:00 Uhr ausgeführt wird.

* 5 * * * www-data /usr/bin/php /var/www/html/console.php report-export -c /var/www/html/src/handler/config/csv-export.ini >/dev/null 2>&1

Weitere Möglichkeiten

Über die Erstellung von Reports stellen Sie beliebige Daten in der CMDB zusammen und exportieren diese als CSV-Datei auf den Server. Über verschiedene Kommandozeilenprogramme wie cURL oder rclone können Sie diese CSV-Dateien auch ohne Probleme auf andere Server oder Cloud-Storages transferieren. Auch die Übergabe und Weiterverarbeitung durch eine API ist möglich. i-doit setzt auch hier keine Grenzen.

Haben Sie noch weitere Fragen zu diesem Thema? Die Experten unseres Support-Teams helfen Ihnen gerne weiter. Werfen Sie auch einen Blick in unsere umfangreiche Knowledge-Base.

Pattrick Bluhm

Der Autor

Pattrick Bluhm ist zertifizierter IT-Projektmanager im Bereich ITSM, CMDB und IT-Dokumentation. Er konzipiert und plant Dokumentationsprojekte und führt sie mit i-doit für mittelständische Unternehmen in der DACH-Region um. Im Jahr 2020 veröffentlichte er sein erstes Buch mit dem Titel "IT-Dokumentation - Projekte erfolgreich umsetzen".