Zwischen Aufgabe Bash: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „= Übungsaufgabe: Webserver-Steuerung mit Bash (webctl.sh) = *In dieser Aufgabe soll ein Bash-Skript einen lokalen Python-Webserver starten, stoppen, überwac…“)
 
Zeile 48: Zeile 48:
 
*Alle Fehlerfälle sollen sinnvolle Meldungen und passende exit-Codes zurückgeben.
 
*Alle Fehlerfälle sollen sinnvolle Meldungen und passende exit-Codes zurückgeben.
  
 +
 +
<!---
 
== Lösung (Kommentar) ==
 
== Lösung (Kommentar) ==
 
<pre>
 
<pre>
Zeile 156: Zeile 158:
 
esac
 
esac
 
</pre>
 
</pre>
 +
--->

Version vom 25. November 2025, 15:56 Uhr

Ü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.