Zwischen Aufgabe Bash

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Übungsaufgabe: Webserver-Steuerung mit Bash (webctl.sh)

  • In dieser Aufgabe soll ein Bash-Skript einen lokalen Python-Webserver starten, stoppen, überwachen und den Status anzeigen.
  • Dabei sollen die in der Bash verfügbaren Kontrollstrukturen wie case, if, for, while, until, continue, break und exit sinnvoll eingesetzt werden.

Aufgabenstellung

  • Erstellen Sie ein Skript webctl.sh mit folgenden Befehlen:
  • start PORT
  • stop
  • status
  • wait
  • help

Anforderungen

Argument- und Umgebungsprüfung

  • Bei allen Befehlen außer help muss geprüft werden, ob python3 installiert ist.
  • Beim Befehl start muss ein gültiger Port (1024–65535) angegeben werden.
  • Ungültige Eingaben sollen mit exit 1, fehlende Python-Installation mit exit 2 quittiert werden.

start-Funktion

  • Wenn bereits ein Webserver läuft (PID-Datei /tmp/web.pid existiert), soll ein Fehler ausgegeben werden (exit 3).
  • Der Startvorgang besteht aus einer for-Schleife über fünf Versuche.
  • Beim dritten Versuch soll der Webserver mit python3 -m http.server PORT im Hintergrund gestartet werden.
  • Die PID soll in /tmp/web.pid gespeichert werden und die Schleife mit break verlassen werden.
  • Abschluss: Ausgabe "Webserver gestartet".

stop-Funktion

  • Wenn keine PID-Datei existiert, soll das Skript mit exit 4 enden.
  • Mit einer while-Schleife soll der Prozess beendet werden, solange kill erfolgreich ist.
  • Jeder zweite Schleifendurchlauf soll mit continue übersprungen werden.
  • Nach erfolgreichem Stoppen: PID-Datei löschen und "gestoppt" ausgeben.

status-Funktion

  • Wenn eine PID-Datei existiert, prüfen Sie, ob der Prozess noch läuft.
  • Wenn er läuft: Ausgabe "läuft".
  • Wenn nicht: Ausgabe "PID existiert, aber Prozess tot".

wait-Funktion

  • Mit einer until-Schleife soll gewartet werden, bis der Prozess nicht mehr läuft.
  • Alle zwei Sekunden soll "warte..." ausgegeben werden.

help-Funktion

  • Gibt eine Übersicht der verfügbaren Befehle aus.

Zusatzhinweis

  • Alle Fehlerfälle sollen sinnvolle Meldungen und passende exit-Codes zurückgeben.