Praxisbeispiele für Bash- & PowerShell-Skripte im produktiven IT-Betrieb
Praxisnahe Skripte sind der Übergang von theoretischer Automatisierung zu realem, produktivem DevOps- und Betriebsalltag. In diesem Kapitel werden typische, bewährte Anwendungsfälle vorgestellt, wie sie in professionellen IT-, Cloud-, Self-Hosting- und Unternehmensumgebungen regelmäßig eingesetzt werden.
1. Grundprinzipien produktiver Skripte
- Vorhersehbares Verhalten
- Klare Ein- und Ausgaben
- Saubere Fehlerbehandlung
- Logging und Statusmeldungen
- Keine interaktiven Abfragen im Automatikbetrieb
Skripte müssen so geschrieben sein, dass sie sowohl manuell als auch automatisiert (Cron, CI/CD, Scheduler) stabil laufen.
2. Bash – Praxisbeispiele
2.1 Systemupdate & Reboot-Check
#!/bin/bash
LOGFILE="/var/log/system_update.log"
echo "Update gestartet: $(date)" >> $LOGFILE
apt update && apt upgrade -y
if [ $? -eq 0 ]; then
echo "Update erfolgreich abgeschlossen" >> $LOGFILE
else
echo "FEHLER beim Update" >> $LOGFILE
exit 1
fi
if [ -f /var/run/reboot-required ]; then
echo "Reboot erforderlich" >> $LOGFILE
fi
Einsatz: Regelmäßige Wartung von Linux-Servern Fehlerbehandlung: Exit-Code-Auswertung Erweiterung: Mail- oder Slack-Benachrichtigung
2.2 Backup-Überprüfung
#!/bin/bash
BACKUP_DIR="/backup/daily"
MIN_FILES=5
COUNT=$(ls -1 $BACKUP_DIR | wc -l)
if [ $COUNT -lt $MIN_FILES ]; then
echo "WARNUNG: Zu wenige Backups vorhanden"
exit 2
else
echo "Backup-Status OK"
fi
Nutzen: Früherkennung fehlerhafter Backup-Jobs Integration: Monitoring-Systeme (Nagios, Icinga, Zabbix)
2.3 Benutzeranlage automatisieren
#!/bin/bash
USERNAME=$1
if id "$USERNAME" &>/dev/null; then
echo "Benutzer existiert bereits"
exit 1
fi
useradd -m -s /bin/bash "$USERNAME"
passwd "$USERNAME"
Sicherheitsaspekt: Skript sollte nur mit sudo-Rechten ausführbar sein Verbesserung: SSH-Key-Verteilung statt Passwort
3. PowerShell – Praxisbeispiele
3.1 Service-Überwachung
$ServiceName = "Spooler"
$Service = Get-Service -Name $ServiceName
if ($Service.Status -ne "Running") {
Start-Service $ServiceName
Write-Output "Service wurde gestartet"
} else {
Write-Output "Service läuft"
}
Einsatz: Windows-Server-Betrieb Automatisierung: Task Scheduler / Monitoring-Trigger
3.2 Eventlog-Auswertung
Get-EventLog -LogName System -EntryType Error -Newest 20 |
Select TimeGenerated, Source, Message
Nutzen: Schnelle Fehleranalyse Erweiterung: Export in CSV oder SIEM-Systeme
3.3 Active Directory – Benutzer anlegen
New-ADUser `
-Name "Max Mustermann" `
-SamAccountName mmustermann `
-UserPrincipalName mmustermann@firma.local `
-AccountPassword (ConvertTo-SecureString "Start123!" -AsPlainText -Force) `
-Enabled $true
Hinweis: Passwort nur als Übergangslösung Best Practice: Zwang zur Passwortänderung beim ersten Login
4. Fehlerbehebung in der Praxis
4.1 Bash
set -e– Skript bei Fehler abbrechenset -x– Debug-Ausgabe- Logs konsequent schreiben
4.2 PowerShell
Try / Catch-Blöcke-ErrorAction Stop- Transkripte mit
Start-Transcript
5. Typische Probleme & Lösungen
| Problem | Ursache | Lösung |
|---|---|---|
| Skript läuft manuell, aber nicht automatisiert | Pfad-/Rechteproblem | Absolute Pfade, korrekte Benutzer |
| Skript bleibt hängen | Interaktive Abfrage | Non-interaktive Parameter |
| Unklare Fehler | Kein Logging | Log-Ausgaben ergänzen |
6. Vor- und Nachteile von Skript-Automatisierung
Vorteile
- Schnell implementierbar
- Hohe Flexibilität
- Ideal für kleine bis mittlere Aufgaben
Nachteile
- Skalierung begrenzt
- Wartung bei wachsender Komplexität schwierig
- Fehlende State-Verwaltung
Zusammenfassung
Bash- und PowerShell-Skripte sind essenzielle Werkzeuge im täglichen IT-Betrieb. Sie eignen sich hervorragend für operative Automatisierung, Wartung, Monitoring-Vorbereitung und Integrationen.
Ab einer gewissen Komplexität sollten sie jedoch durch Konfigurationsmanagement oder Infrastructure-as-Code ergänzt werden.