Website-Suche

5 Bash-Skripte, die ich als Linux-Systemadministrator täglich benutze


Wenn Sie schon einmal Zeit damit verbracht haben, Linux-Systeme zu verwalten, wissen Sie bereits, wie repetitiv und zeitaufwendig einige Aufgaben sein können. Ob es darum geht, den Speicherplatz zu überprüfen, ausgefallene Dienste neu zu starten oder Ihr System auf dem neuesten Stand zu halten – alles manuell zu erledigen wird schnell zu einem Kopfschmerz, besonders wenn Sie mehr als einen Server betreuen.

Bash-Skripte sind wie kleine Assistenten, die Ihnen helfen, häufige Aufgaben zu automatisieren, menschliche Fehler zu reduzieren und wertvolle Zeit zu sparen. Anstatt die gleichen Befehle immer wieder auszuführen, können Sie Ihre Skripte dies zuverlässig und konsequent erledigen lassen.

Im Laufe der Jahre haben viele Systemadministratoren Skripte erstellt und verfeinert, um Systeme zu überwachen, die Wartung zu automatisieren und auf Probleme zu reagieren, bevor sie ernsthafte Probleme werden.

In diesem Artikel werden Sie fünf einfache, aber leistungsstarke Bash-Skripte entdecken, die im täglichen Linux-Systemadministrationsalltag nützlich sind. Diese Skripte sind anfängerfreundlich und leicht an Ihre eigene Umgebung anpassbar.

1. Festplattennutzungsüberwachungs-Skript

Eines der häufigsten Probleme bei Linux-Servern ist das Auslaufen des Speicherplatzes. Protokolle füllen sich, Backups wachsen, und plötzlich stürzt Ihre Anwendung ab, weil der Server keinen Speicherplatz mehr hat. Deshalb überprüft mein erstes Skript die Festplattennutzung und sendet eine Warnung, wenn die Nutzung über ein festgelegtes Limit hinausgeht (zum Beispiel 80%).

#!/bin/bash
THRESHOLD=80
EMAIL="[email "

df -hP | grep -vE '^Filesystem|tmpfs|cdrom' | while read line; do
  USAGE=$(echo $line | awk '{print $5}' | sed 's/%//')
  MOUNTPOINT=$(echo $line | awk '{print $6}')
  
  if [ $USAGE -ge $THRESHOLD ]; then
    echo "Warning: High disk usage on $MOUNTPOINT ($USAGE%)" | mail -s "Disk Alert: $HOSTNAME" $EMAIL
  fi
done

Dieses Skript überprüft jede Partition, und wenn eine von ihnen die 80%-Grenze überschreitet, erhalte ich eine E-Mail. Es hilft mir, Probleme zu beheben, bevor sie zu Schwierigkeiten werden. Ich führe dieses Skript alle 6 Stunden über cron aus.

2. System-Update-Automatisierungsskript

Systeme auf dem neuesten Stand zu halten ist entscheidend, besonders für Sicherheitsupdates. Ich benutze dieses einfache Bash-Skript, um Pakete automatisch zu aktualisieren, das System aufzuräumen und mir einen Bericht zu senden.

#!/bin/bash
LOGFILE="/var/log/sys-updates.log"
EMAIL="[email "

echo "Starting updates on $(date)" >> $LOGFILE
apt update && apt upgrade -y >> $LOGFILE 2>&1
apt autoremove -y >> $LOGFILE 2>&1

tail -20 $LOGFILE | mail -s "System Update Report: $HOSTNAME" $EMAIL

(Für RHEL/CentOS-Benutzer ersetzen Sie einfach apt durch die yum- oder dnf-Befehle.)

Dieses Skript einmal täglich über einen Cron-Job auszuführen, hält meine Systeme aktualisiert und sauber. Der E-Mail-Bericht gibt mir die Gewissheit, dass alles reibungslos abgelaufen ist. Wenn etwas schiefgeht, kann ich die Protokolldatei überprüfen und zurücksetzen.

3. Service-Health-Checker-Skript

Als Systemadministrator muss ich wissen, ob wichtige Dienste wie Apache, Nginx oder MySQL ausfallen. Dieses Skript überprüft, ob ein bestimmter Dienst läuft, und falls nicht, startet es ihn neu und benachrichtigt mich.

#!/bin/bash
SERVICES=("apache2" "mysql")
EMAIL="[email "

for SERVICE in "${SERVICES[@]}"; do
  if ! systemctl is-active --quiet $SERVICE; then
    systemctl start $SERVICE
    echo "$SERVICE was down and has been restarted on $HOSTNAME" | mail -s "Service Restart Alert" $EMAIL
  fi
done

Dieses Skript überprüft sie alle 5 Minuten über Cron. Wenn ein Dienst ausfällt, startet es ihn automatisch neu und schickt mir eine Benachrichtigung.

4. Backup-Skript für wichtige Dateien

Backups sind langweilig, bis man sie braucht. Ich habe ein benutzerdefiniertes Bash-Skript, das meine wichtigen Dateien (wie Webdateien, Datenbanken, Konfigurationsdateien) sichert und in einem komprimierten Archiv speichert.

#!/bin/bash
BACKUP_DIR="/backup"
SOURCE_DIRS="/etc /var/www /home"
DATE=$(date +%F)
BACKUP_FILE="$BACKUP_DIR/backup-$DATE.tar.gz"
EMAIL="[email "

tar -czf $BACKUP_FILE $SOURCE_DIRS

if [ $? -eq 0 ]; then
  echo "Backup completed successfully: $BACKUP_FILE" | mail -s "Backup Success - $HOSTNAME" $EMAIL
else
  echo "Backup FAILED!" | mail -s "Backup Failed - $HOSTNAME" $EMAIL
fi

Ich hatte schon Benutzer, die versehentlich wichtige Sachen gelöscht haben, und dieses Skript hat mir mehr als einmal geholfen. Ich behalte 7 Tage an Backups und wechsle sie mit einem anderen Bereinigungsskript. Du kannst Backups auch auf einen entfernten Server oder in die Cloud hochladen, um mehr Sicherheit zu haben.

5. Benutzeranmeldeüberwachungsskript

Dieses Skript überprüft die Benutzeranmeldeaktivität und warnt Sie, wenn sich jemand anmeldet, was besonders hilfreich ist, wenn Sie Produktionsserver verwalten und den Zugriff verfolgen möchten.

#!/bin/bash
LOGFILE="/var/log/auth.log"
LAST_RUN_FILE="/tmp/last_run_time"
EMAIL="[email "

if [ ! -f $LAST_RUN_FILE ]; then
  date --date='5 minutes ago' +%s > $LAST_RUN_FILE
fi

LAST_RUN=$(cat $LAST_RUN_FILE)
NOW=$(date +%s)

awk -v last=$LAST_RUN -v now=$NOW '
  $0 ~ /session opened for user/ {
    cmd = "date -d \""$1" "$2" "$3"\" +%s"
    cmd | getline t
    close(cmd)
    if (t >= last && t <= now) { print $0 } } ' $LOGFILE | mail -s "Login Alert - $HOSTNAME" $EMAIL echo $NOW > $LAST_RUN_FILE

Dieses Skript hilft mir zu wissen, wer auf den Server zugegriffen hat und wann. Es ist großartig, um ungewöhnliche Zugriffsmuster zu erkennen. Sie können es erweitern, um IPs zu blockieren oder Alarme auszulösen, falls erforderlich.

Fazit

Zusammenfassend lässt sich sagen, dass die Nutzung von Bash-Skripten in meinem täglichen Sysadmin-Alltag die Verwaltung und Wartung von Linux-Systemen erheblich verbessert hat. Diese Skripte mögen auf den ersten Blick einfach erscheinen, aber sie übernehmen kritische Aufgaben, die die Stabilität, Sicherheit und reibungslose Funktion der Server gewährleisten.

Wenn Sie vollständige System-Health-Checks (CPU, Speicher, Festplatte und mehr) automatisieren möchten, verpassen Sie nicht meinen anderen Leitfaden: So automatisieren Sie tägliche Linux-Health-Checks mit einem Bash-Skript + Cron