MDXDave.de

Informatikstudent der TH Köln // Android + Coding

Laden...

Betriebssysteme Praktikum - Aufgabe 1

veröffentlicht vor 2 Jahren, am 20. Mai 2015  |  Praktikum    Betriebssysteme      |  0 Kommentare

Im 4. Semester des Medieninformatik-Studiengangs ist das Fach Betriebssysteme und verteilte Systeme 1 (ob es das Fach mit der 2 gibt, weiß ich aktuell nicht :D) Inhalt.

Neben der Vorlesung gibt es erneut ein Praktikum, bei welchem Aufgaben gelöst werden sollen. Aufgabenblatt 1 findet ihr hier (nur mit ILIAS-Zugriff).

1. Aufgabenstellung im Betriebssysteme-Praktikum

Auf die Fragen will ich jedoch nicht eingehen, sondern nur auf die Aufgabe am unteren Ende des Blattes. Aufgabenstellung:

Schreiben Sie ein Shellscript "login.sh", welches automatisch bei jedem Aufruf der Shell ausgeführt wird und eine personalisierte Login-Nachricht auf dem Bildschirm ausgibt. Diese Nachricht soll einen Bezug zur aktuellen Uhrzeit, den Benutzernamen und die Größe des eigenen Homeverzeichnisses beinhalten. Zur Uhrzeit soll je nach der aktuellen Stunde eine unterschiedliche Meldung ausgegeben werden z.b. 6-9 Uhr "Guten Morgen, " oder 10-15 Uhr "Guten Tag, ". Beschränken Sie sich auf ca. 4-5 Tagesabschnitte. Die Ausgabe der Größe des eigenen Homeverzeichnisses sollte in lesbaren MiBi erfolgen. - Challenge 1: statt den "Real Name" ausgeben - Challenge 2: Überprüfung, ob der Speicherplatz die aktuelle Grenze von 250 MB annähert oder überschreitet und eine textliche oder farbliche Reaktion darauf

2. Variablen

Wir erstellen eine Datei login.sh:

vim login.sh

und schreiben in die erste Zeile die Anwendung mit der das Skript ausgeführt werden soll:

#! /usr/bin/sh

Um den Pfad zu erhalten, könnt ihr in der Console einfach

which sh

schreiben.

Wir benötigen mehrere Variablen:

Dafür schreiben wir folgende Befehle in unsere login.sh:

hour=`date +%H` #Stunde
min=`date +%M` # Minute
space=$( du -sm ~| awk '{print $1}') #Speicherplatzverbrauch im Home-Verzeichnis
maxspace=250 # max. Speicher in MB
realname=`ypcat passwd | grep $USER | cut -d: -f5` #Realen Namen ermitteln

3. Begrüßung je nach Uhrzeit

In der Aufgabenstellung geht es zusätzlich um eine Begrüßung je nach Uhrzeit. Um dies zu erreichen müssen wir mehrere IF- bzw. IF-Else-Abfragen erstellen, bei welchen wir die Variable $hour prüfen, die wir oben definiert haben:

if [ $hour -lt 06 ]
  then
  echo "\033[1;37mGuten Morgen!"
elif [ $hour -lt 12 ]
  then
  echo "\033[1;37mGuten Tag!"
elif [ $hour -lt 17 ]
  then
  echo "\033[1;37mGuten Nachmittag!"
elif [ $hour -lt 22 ]
  then
  echo "\033[1;37mGuten Abend!"
else
  echo "\033[1;37mGute Nacht!"
fi

Der Parameter -lt steht dabei für less than (kleiner als), -gt würde entsprechend für das Gegenteil stehen. Wichtig ist, dass ihr zwischen den Klammern [ und ] ein Leerzeichen lasst!

4. Ausgabe der restlichen Parameter

Die Ausgabe der restlichen Parameter Nutzername, Realaer Name, Uhrzeit und Speicherplatz ist ebenfalls sehr simpel:

echo "\033[0mAktueller Nutzername:    \033[1;36m $USER"
echo "\033[0mRealer Name:                \033[1;36m $realname"
echo "\033[0mAktuelle Uhrzeit:        \033[1;36m ${hour}:${min} Uhr"
echo "\033[0mAktueller Speicherplatz: \033[1;36m $space MB"
echo "\033[0m"

Falls ihr euch über die komischen Zeichenketten \033[1;36m o.ä. wundert, diese ändern die Farbe der Ausgabe. Eine schöne Übersicht gibt es beispielsweise hier.

5. Prüfen des Speicherplatzes

Um den Speicherplatzverbrauch mit dem maximalen Speicherplatz zu vergleichen, reicht ebenfalls wieder eine einfache IF-Abfrage:

if [ $space -gt $maxspace ]
        then
        echo "\033[1;31mDer Speicherplatz überschreitet $maxspace MB!\033[0m"
else
        freespace=$(($maxspace-$space))
        echo "\033[0;32mSie haben noch ca. $freespace MB Speicherplatz frei!\033[0m"
fi

Hier wird natürlich nur die Ausgabe entsprechen angepasst, eine Sperrung des Nutzeraccounts etc. wird hier nicht vorgenommen. Zusätzlich wird bei weniger als des vorgegebenen maximalen Speicherplatzes der noch freie Speicherplatz ausgegeben.

6. Ausgabe der Daten beim Login

Damit die ganzen Sachen bei der Anmeldung angezeigt werden, müsst ihr einfach die .tcshrc Datei öffnen und dort den PFad zu eurem Skript reinschreiben:

[...]
/home/miXYZ/login.sh

Anschließend verpassen wir unserer login.sh noch Ausführungsrechte mittels

chmod +x login.sh

und wir sind fertig!

Das war auch schon alles, das gesamte Skript findet ihr hier.