diff --git a/m122/LB1/bash-pruefung-b.md b/m122/LB1/bash-pruefung-b.md new file mode 100644 index 0000000..efb2323 --- /dev/null +++ b/m122/LB1/bash-pruefung-b.md @@ -0,0 +1,232 @@ +# M122 - Bash - Prüfung 2 Serie b + + +**Erlaubte Hilfsmittel :** + +- Alle Hilfsmittel ausser Netzwerkkommunikation (**LAN-Kabel + entfernen!**) + +**Generell nicht erlaubt ist:** + +- Abschreiben von der Nachbarprüfung oder Weitergeben von + Prüfungen/Prüfungsresultaten innerhalb der Klasse. Kommunikation + über Handy oder Computernetzwerk. + +Jeglicher Verstoss gegen diese Regeln führt umgehend zum Ausschluss aus +der Prüfung und der Note 1. +Name: `__________________________` Klasse: `_____________` Datum:`_____________` + + +|Aufgabe | max. Punkte | erreichte Punkte | +|---- |---- | ---- | +|1a | 1 | +|1b | 1 | +|1c | 1 | +|1d | 1 | +|1e | 1 | +|2a | 2 | +|2b | 2 | +|2c | 2 | +|2d | 2 | +|3a | 3 | +|3b | 5 | +|---- |---- |---- +|Total | 21 | + + + +**Aufgabe - 1a (1 Punkt)** - grep + +Gegeben ist folgendes Kommando: + +``` {.bash frame="none" mathescape=""} +cat /etc/passwd | grep -v ssh +``` + +Erklären sie, was dieses Kommando genau macht (berücksichtigen sie auch +die Option `-v`): + +Antwort: +`_________________________________________________________________________________ __________________________________________________________________________________ __________________________________________________________________________________` + + + +**Aufgabe - 1b (1 Punkt)** - Verzeichnisse wechseln + +Angenommen, sie befinden sich auf Ihre Linuxsystem unter `/home/user1/`, +geben sie die **realtive** und die **absolute** Pfadangabe an, um in das +Verzeichnis `/tmp` zu wechseln: + +Antwort: +`_________________________________________________________________________________ __________________________________________________________________________________ __________________________________________________________________________________` + + + +**Aufgabe - 1c (1 Punkt)** - Cronjob + +Sie wollen eines Ihre Bashskripte mit crontab automatisieren, +dazu haben sie einen cronjob eingerichtet welcher nach nachfolgendem +Muster ausgelöst wird: + +``` {.bash frame="none" mathescape=""} +0 2 * * 3 +``` + +Wann wird das Skript jeweils ausgeführt? + +Antwort: +`_________________________________________________________________________________ __________________________________________________________________________________ __________________________________________________________________________________` + + + +**Aufgabe - 1d (+1 Punkt pro richtige, -1 Punkt pro fehlende/falsche Antwort)** - Dateirechte + +Welches Dateirecht muss zusätzlich auf einer Skriptdatei gesetzt +werden, damit diese *ausgeführt* werden kann? (einkreisen) + + - `0` + - `x` + - `w` + - `t` + - `s` + + + +**Aufgabe - 1e (1 Punkt)** - Wildcards + +Sie führen folgendes Kommando aus: + +``` {.bash frame="none" mathescape=""} +touch {d..f}file +``` +Erklären sie, was das Kommando genau macht: + +Antwort: +`___________________________________________________________________________________ ____________________________________________________________________________________ ____________________________________________________________________________________`\ + + +## Teil 2 - Codestücke + +**Aufgabe - 2a (2 Punkte)** - Backup Skript + +Nachfolgend sehen sie ein unvollständiges Backupskript. Die wichtigsten +Informationen, um mit `tar` ein Backup durchzuführen, werden in den +Variablen `quelle`, `ziel` und `outputFile` zwischengespeichert. +Vervollständigen sie das Skript so, dass ein Backup vom Ordner `home` +gemacht wird und zB. in der Datei `/var/backups/home-20151214.tgz` +abgelegt wird. Benutzen sie dazu die bereits definierten Variablen. + +``` {.bash frame="none" mathescape=""} +#!/bin/bash +outputFile=home-$(date +%Y%m%d).tgz +quelle="/home/" +ziel="/var/backups/" +tar -cZf ________________ __________ +``` + +**Aufgabe - 2b (2 Punkte)** - for in + +Nachfolgend sehen sie ein unvollständiges Skript. Sie sollten das Skript +so ergänzen, dass es den Inhalt des Verzeichnisses `/home/` ausgibt und +zwar unter der Verwendung der abgebildeten `for in` Schleife. + +``` {.bash .numberLines linenos="true" frame="none" mathescape=""} +#!/bin/bash +for i in ______________ ; do + echo $i +done +``` + +**Aufgabe - 2c (2 Punkte)** - If - else + +Nachfolgend sehen sie ein unvollständiges Skript. Sie sollen das Skript +nun so ergänzen (Zeilen 3 und 5), dass dieses, falls das 1. Argument den +Wert `keyw0rd` hat, den Text *sie dürfen passieren* ausgibt und falls +nicht den Text *nicht erlaubt!*. + +``` {.bash .numberLines linenos="true" frame="none" mathescape=""} +#!/bin/bash +if [ $1 = "keyw0rd" ]; then + _____________________ +else + _____________________ +fi +``` + +**Aufgabe - 2d (2 Punkte)** - while + +Nachfolgend sehen sie ein unvollständiges Skript. Sie sollen das Skript +so ergänzen, dass die Schleife solange läuft, wie `zahler` kleiner als +10 ist (Zeile 3) und der `zaehler` zum Schluss jedes Schleifendurchlaufs +um 1 erhöht wird (Zeile 5). + +``` {.bash .numberLines linenos="true" frame="none" mathescape=""} +#!/bin/bash +zaehler=0 +while [ $zaehler _________ ]; do + echo der zaehler ist $zaehler + ____________ +done +``` + + +## Teil 3 - Programmieraufgaben + +**Aufgabe - 3a (3 Punkte, 1 Punkt pro Zeile)** - Rechnerskript + +Im nachfolgenden sehen sie ein Taschenrechnerskript, welches zwei Zahlen +und eine Operation einliest und dann die beiden Zahlen mit dieser +Operation verrechnet (zB. addiert) und ausgibt: + +``` {.bash .numberLines linenos="true" frame="none" mathescape=""} +echo "bitte gebe eine Nummer ein" +read n1 +echo "bitte wähle eine Operation" +echo "1. addieren" +echo "2. subtrahieren" +echo "3. dividieren" +echo "4. multiplizieren" +read opr +echo "bitte gebe eine zweite Nummer ein" +read n2 + +if [ $opr = "1" ] + then + echo $((n1+n2)) + ________________ + ________________ + ________________ +elif [ $opr = "3" ] + then + echo $((n1/n2)) +elif [ $opr = "4" ] + then + echo $((n1*n2)) +fi +``` + +Der Code einer Operation fehlt (Subtraktion). Ergänzen sie den Code an +der hervorgehobenen Stelle so, dass auch die Subtraktion funktioniert.\ + + +**Aufgabe - 3b (5 Punkte)** - IP-Adressen von Nameservern + +In einer Datei `/etc/resolv.conf` sind die IP-Adressen der von Ihrem +Linuxsystem verwendeten Nameserver eingetragen. Der Inhalt dieser Datei +kann zB. so aussehen: + +``` + search example.com + nameserver 10.0.1.6 + nameserver 10.0.1.7 +``` + +Schreiben sie ein kleines Skript, welches alle IP's der Nameserver +ausgibt. Mit dem obigen Beispiel sollte Ihr Skript also folgende Ausgabe +erzeugen: + +``` + 10.0.1.6 + 10.0.1.7 +``` +Verwenden sie dazu `cat`, `grep` und `cut`. diff --git a/m306/4_Projekt-Fuehrung/M306_4_Projektfuehrung_Praeinstruktion.txt b/m306/4_Projekt-Fuehrung/M306_4_Projektfuehrung_Praeinstruktion.txt index a16b231..6381c0a 100644 --- a/m306/4_Projekt-Fuehrung/M306_4_Projektfuehrung_Praeinstruktion.txt +++ b/m306/4_Projekt-Fuehrung/M306_4_Projektfuehrung_Praeinstruktion.txt @@ -1,14 +1,17 @@ -Führung - Vorwissenaktivierung/PräInstruktion. +Führung - PräInstruktion. + (Jeder für sich, schriftlich. Vermutungen sind auch gut) +1.) Wie können viele Leute geführt werden? -1.) Was sind die Eigenschaften, die ein guter Projektleiter haben sollte? -2.) Wie können viele Leute geführt werden? +2.) Wie können Sitzungen effizient/er gemacht werden? -3.) Wie können Sitzungen effizient/er gemacht werden? -4.) Wie gehen Sie als Sitzungsleiter mit Teilnehmer um, die vorlaut sind und immer Recht haben wollen? +3.) Was kann ein Projektleiter tun, wenn sich der End-Termin nicht halten lässt? -5.) Was kann ein Projektleiter tun, wenn sich der End-Termin nicht halten lässt? +4.) Was sind die Eigenschaften, die ein guter Projektleiter haben sollte? + + +5.) Was für nicht-sichtbare Rollen gibt es in jedem Team?