Shell-Scripting Grundlagen (Bash)#
Ein Shell-Skript ist eine Textdatei mit einer Abfolge von Befehlen, die von einer Shell (unter Linux/Unix meist Bash, Bourne Again Shell) nacheinander ausgeführt wird. Statt wiederkehrende Administrationsaufgaben — Backups, Aufräumarbeiten, Prüfungen des Systemzustands — jedes Mal manuell einzutippen, werden sie in einem Skript automatisiert und reproduzierbar gemacht.
Grundlegende Bash-Konzepte#
Shebang#
Jedes Bash-Skript beginnt mit der Shebang-Zeile, die dem System mitteilt, welcher Interpreter es ausführen soll:
#!/bin/bashVariablen#
Variablen werden ohne Typangabe zugewiesen (kein Leerzeichen um das =) und mit $ ausgelesen:
name="server01"
echo "Hostname: $name"Bedingungen (if)#
if [ -f "/etc/hostname" ]; then
echo "Datei existiert"
else
echo "Datei fehlt"
fiSchleifen (for)#
for i in 1 2 3; do
echo "Durchlauf $i"
doneEin- und Ausgabe#
echo— Text auf der Konsole ausgebenread— Eingabe des Nutzers in eine Variable einlesen
read -p "Servername: " server
echo "Du hast $server eingegeben"Beispiel: einfaches Backup-Skript#
Ein kurzes, klassisches Beispiel — prüft, ob ein Zielverzeichnis existiert, und sichert es andernfalls mit einer Fehlermeldung:
#!/bin/bash
quelle="/var/www/html"
ziel="/backup/html_$(date +%F).tar.gz"
if [ -d "$quelle" ]; then
tar -czf "$ziel" "$quelle"
echo "Backup erstellt: $ziel"
else
echo "Fehler: Quellverzeichnis nicht gefunden"
fiDas Skript prüft mit [ -d "$quelle" ], ob das Verzeichnis existiert, erstellt bei Erfolg mit tar ein komprimiertes Archiv und gibt andernfalls eine Fehlermeldung aus.
Anwendungsfälle in der Systemadministration#
Shell-Skripte werden in der Systemadministration vor allem für wiederkehrende, zeitgesteuerte Aufgaben eingesetzt:
- Backups: regelmäßige Datensicherung von Verzeichnissen oder Datenbanken
- Log-Auswertung/-Rotation: alte Log-Dateien aufräumen oder archivieren
- Systemüberwachung: Speicherplatz, CPU-Auslastung oder Dienste prüfen und bei Problemen benachrichtigen
- Benutzerverwaltung: Massenanlage oder -pflege von Benutzerkonten
- Deployment: automatisiertes Ausrollen von Software oder Konfigurationsänderungen
Cronjobs#
Damit ein Skript nicht manuell gestartet werden muss, wird es häufig über einen Cronjob zeitgesteuert ausgeführt. Der Cron-Daemon ist ein im Hintergrund laufender Dienst, der Aufgaben zu festgelegten Zeitpunkten (z. B. täglich, stündlich, zu bestimmten Wochentagen) automatisch startet. Administratoren tragen dafür Zeitplan und auszuführendes Skript in eine sogenannte Crontab-Konfiguration ein — so laufen Wartungsaufgaben zuverlässig auch ohne manuelles Eingreifen, etwa nachts, wenn die Systemlast gering ist.
Typischer Automatisierungs-Workflow#
flowchart TD
A[Cronjob wird zur\nplanmäßigen Zeit ausgelöst] --> B[Skript startet]
B --> C{Bedingung erfüllt?\nz.B. Verzeichnis vorhanden}
C -->|Ja| D[Aktion ausführen\nz.B. Backup erstellen]
C -->|Nein| E[Fehlermeldung ausgeben]
D --> F[Ergebnis ins Log schreiben]
E --> F
F --> G[Skript endet]Prüfungsbeispiele#
„Warum werden wiederkehrende Administrationsaufgaben häufig als Shell-Skript statt manuell ausgeführt?"
→ Weil Skripte reproduzierbar und fehlerresistenter sind als manuelle Eingaben, sich in Kombination mit einem Cronjob zeitgesteuert automatisieren lassen und dokumentieren, welche Schritte genau ausgeführt werden.
„Was bewirkt die Zeile
#!/bin/basham Anfang eines Skripts?"
→ Die Shebang-Zeile legt fest, mit welchem Interpreter (hier: Bash) das Skript ausgeführt werden soll, wenn es direkt aufgerufen wird.
„Welche Aufgabe übernimmt der Cron-Daemon in der Systemadministration?"
→ Er führt hinterlegte Skripte oder Befehle zu festgelegten, wiederkehrenden Zeitpunkten automatisch aus, sodass Wartungsaufgaben wie Backups ohne manuelles Eingreifen ablaufen.
Quiz#
❓ Wozu dient die Zeile #!/bin/bash am Anfang eines Skripts?
❓ Welches Test-Flag prüft in einer Bash if-Bedingung wie [ -d $pfad ], ob es sich um ein Verzeichnis handelt?
❓ Welcher Dienst führt ein Bash-Skript zu festgelegten, wiederkehrenden Zeitpunkten automatisch aus?
Siehe auch#
- powershell-grundlagen — vergleichbares Automatisierungskonzept unter Windows
- programmiergrundlagen — Kontrollstrukturen wie if/for, die auch in Bash gelten
- backup-strategien — Backup-Konzepte, die per Skript automatisiert umgesetzt werden