clean-up-inventory.sh
#!/bin/bash
# Funktion zur Anzeige der Hilfe
show_help() {
echo "Verwendung: $0 [Tage]"
echo "Löscht Dateien im Verzeichnis /opt/omd/sites/\$site/var/check_mk/inventory_archive/, die älter als die angegebene Anzahl von Tagen sind."
echo "Standardwert für Tage ist 30."
echo "Beispiel: $0 45"
exit 1
}
# Überprüfe, ob das Hilfeargument angegeben wurde
if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
show_help
fi
# Standardwert für Tage ist 30
days=${1:-30}
# Hole die Namen der Sites
sites=$(omd sites | awk '{print $1}')
# Initialisiere Zähler und Speicherplatz
total_deleted_files=0
total_freed_space=0
# Iteriere über die Sites und lösche die Dateien
for site in $sites; do
archive_dir="/opt/omd/sites/$site/var/check_mk/inventory_archive/"
echo "Verzeichnis: $archive_dir"
# Finde und lösche Dateien, die älter als die angegebene Anzahl von Tagen sind
deleted_files=$(find $archive_dir -type f -mtime +$days -exec rm -v {} + | wc -l)
freed_space=$(du -sb $archive_dir | awk '{print $1}')
# Aktualisiere die Gesamtwerte
total_deleted_files=$((total_deleted_files + deleted_files))
total_freed_space=$((total_freed_space + freed_space))
echo "Site: $site"
echo "Gelöschte Dateien: $deleted_files"
echo "Freigegebener Speicherplatz: $(du -sh $archive_dir | awk '{print $1}')"
echo
done
# Ausgabe der Gesamtwerte
echo "Gesamt gelöschte Dateien: $total_deleted_files"
echo "Gesamt freigegebener Speicherplatz: $(du -sh /opt/omd/sites | awk '{print $1}')"
Verwendung des Skripts / Usage of script
Deutsche Anleitung
Deutsch
Beschreibung
Dieses Bash-Skript löscht Dateien im Verzeichnis /opt/omd/sites/$site/var/check_mk/inventory_archive/, die älter als die angegebene Anzahl von Tagen sind. Es ist für die Verwendung mit Check_MK/OMD-Systemen gedacht, um Platz im Archivverzeichnis freizugeben.
Verwendung
./script.sh [Tage]
-
Tage: (Optional) Anzahl der Tage, nach denen Dateien als veraltet gelten und gelöscht werden. Standardwert ist 30 Tage.
-
Hilfe: Verwende
-hoder--help, um die Hilfe anzuzeigen.
Beispiel
./script.sh 45
Löscht alle Dateien, die älter als 45 Tage sind, in den Archivverzeichnissen aller OMD-Sites.
Ausgabe
Das Skript gibt für jede Site Folgendes aus:
-
Verzeichnis, das durchsucht wird.
-
Anzahl der gelöschten Dateien.
-
Freigegebener Speicherplatz (in lesbarem Format).
Am Ende wird eine Zusammenfassung der gesamt gelöschten Dateien und des freigegebenen Speicherplatzes angezeigt.
Voraussetzungen
-
Das Skript muss mit Root-Berechtigungen ausgeführt werden.
-
Das
omd-Kommando muss verfügbar sein. -
Die Befehle
find,rm,duundawkmüssen installiert sein.
Automatisierung mit Cron
Um das Skript regelmäßig auszuführen, können Sie einen Cronjob einrichten. Führen Sie crontab -e als root-Benutzer aus und fügen Sie eine Zeile wie die folgende hinzu:
# Lösche wöchentlich (jeden Sonntag um 03:30 Uhr) Inventar-Archivdateien, die älter als 60 Tage sind.
30 3 * * 0 /pfad/zum/script.sh 60 > /dev/null 2>&1
-
30 3 * * 0: Führt den Befehl jeden Sonntag um 03:30 Uhr aus. -
/pfad/zum/script.sh 60: Der absolute Pfad zu Ihrem Skript, gefolgt von der gewünschten Anzahl an Tagen. -
> /dev/null 2>&1: Unterdrückt die Ausgabe des Skripts, um E-Mail-Benachrichtigungen durch Cron zu vermeiden.
Hinweise
-
Vorsicht: Das Skript löscht Dateien unwiderruflich.
-
Testen Sie das Skript vor der Automatisierung gründlich.
English description
English
Description
This Bash script deletes files in the directory /opt/omd/sites/$site/var/check_mk/inventory_archive/ that are older than the specified number of days. It is designed for use with Check_MK/OMD systems to free up space in the archive directory.
Usage
./script.sh [days]
-
days: (Optional) Number of days after which files are considered outdated and deleted. The default is 30 days.
-
Help: Use
-hor--helpto display the help message.
Example
./script.sh 45
Deletes all files older than 45 days in the archive directories of all OMD sites.
Output
The script outputs the following for each site:
-
The directory being processed.
-
The number of deleted files.
-
The amount of freed storage space (in human-readable format).
At the end, a summary of the total deleted files and freed storage space is displayed.
Requirements
-
The script must be run with root permissions.
-
The
omdcommand must be available. -
The commands
find,rm,du, andawkmust be installed.
Automation with Cron
To run the script regularly, you can set up a cron job. Run crontab -e as the root user and add a line similar to the following:
# Weekly cleanup (every Sunday at 3:30 AM) of inventory archive files older than 60 days.
30 3 * * 0 /path/to/your/script.sh 60 > /dev/null 2>&1
-
30 3 * * 0: Executes the command every Sunday at 3:30 AM. -
/path/to/your/script.sh 60: The absolute path to your script, followed by the desired number of days. -
> /dev/null 2>&1: Suppresses the script’s output to prevent cron from sending email notifications.
Notes
-
Caution: The script deletes files permanently.
-
Test the script thoroughly before automating it.