Ich nutze eine altbewährte Methode, indem ich mittels diff das entsprechende Configfile mit einer (vorher angelegten) Kopie vergleiche und bei Feststellung von Unterschieden einfach durch die Kopie ersetze.
Das Ganze in ein Shellscript verpackt sieht so aus:
Code: Select all
#!/bin/bash
# Definiere das Zielverzeichnis
target_dir="/Pfad/zum/Zielverzeichnis"
# Definiere den Dateinamen der zu prüfenden Datei
filename="datei.txt"
# Definiere die Empfänger-Mailadresse
empfaenger="empfaenger@example.com"
# Pfad zur Kopie der zu prüfenden Datei
copy_path="$filename.copy"
# Wechsle ins Zielverzeichnis
cd "$target_dir" || exit
# Überprüfe, ob eine Kopie der Datei existiert, andernfalls erstelle eine Kopie
if [ ! -f "$copy_path" ]; then
cp "$filename" "$copy_path"
fi
# Vergleiche die zu prüfende Datei mit der Kopie
diff_output=$(diff "$filename" "$copy_path")
# Überprüfe, ob Unterschiede zwischen den Dateien bestehen
if [ -n "$diff_output" ]; then
# Ersetze die zu prüfende Datei durch die Kopie
cp "$copy_path" "$filename"
# Sende eine E-Mail
subject="Datei $filename wurde wiederhergestellt"
body="Die Datei $filename wurde wiederhergestellt."
echo "$body" | mail -s "$subject" "$empfaenger"
fi
Das Script prüft zu Beginn, ob die Kopie schon existiert, wenn nicht, wird diese angelegt (das passiert nur beim ersten Durchlauf des Scripts). Dann prüft es auf Unterschiede, ersetzt das File, wenn nötig und schickt eine Mail bei Ersetzung (kann man rausnehmen, wenn nicht gebraucht).
Jetzt noch das Script mit chmod +x ausführbar machen und als root minütlich als Cron abfeuern.
Warnung:
Ihr solltet wissen, was ihr da macht! Im schlimmsten Fall konfiguriert ihr euch euer System kaputt!
Bedenkt bitte auch, daß Änderungen an Configfiles nicht ohne Grund passieren...es ist also nicht mit der Ersetzung getan, man muß noch manuell prüfen!