Skip to main content

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 abbrechen
  • set -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.