Ich habe aus meinen Internetfunden ein Skript erstellt, um einen SA über Benutzer zu benachrichtigen, die zu einem Server hinzugefügt werden. Ich habe es mit einem Cron eingerichtet, um das Skript alle 5 Minuten auszuführen und Unterschiede in der Datei /var/log/secure zu überwachen. Es sendet jedoch trotzdem eine leere E-Mail, wenn sich nichts geändert hat. Wie kann ich es so bearbeiten, dass keine E-Mail gesendet wird, wenn keine Änderungen vorgenommen wurden? Das Skript ist unten aufgeführt:
file="/var/log/secure"
while cmp "$file" "${file}_bkp"; do
sleep 2
done
diff "$file" "${file}_bkp" | grep -e useradd | mailx -s "User Added On Server" [email protected]
cp "$file" "${file}_bkp"
Antwort1
Ich stimme der Bemerkung zu, dass eine leistungsfähigere Methode zur Überprüfung darin besteht, die /etc/passwd
Datei zu überwachen, anstatt eine Protokolldatei zu analysieren, die möglicherweise eine große, intensiv zu verarbeitende Datei sein könnte. Wenn /etc/passwd
festgestellt wird, dass sich die Datei geändert hat, können Sie eine Sicherungskopie der Datei erstellen, um zu sehen, was sich geändert hat.
Kurzes Beispiel, das Sie genau an Ihre Bedürfnisse anpassen können.
# One-off initial Set up
md5 -q /etc/passwd > /etc/passwd.md5
cp /etc/passwd /etc/passwd.compare
# Cron job script logic
if [[ $(md5 -q /etc/passwd) != $(< /etc/passwd.md5) ]]
then
# The passwd file has changed, do something!
#
# Diff /etc/passwd with /etc/passwd.compare to get details, etc.
# Send an alert with details
#
# Prepare for the next time a change happens.
md5 -q /etc/passwd > /etc/passwd.md5
cp -f /etc/passwd /etc/passwd.compare
#
fi