mirror of
https://gitlab.com/harald.mueller/aktuelle.kurse.git
synced 2024-11-27 20:21:56 +01:00
muh
This commit is contained in:
parent
dd1b9da301
commit
78dbe77ccb
@ -1,232 +0,0 @@
|
|||||||
# 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`.
|
|
BIN
m122/LB2_auto-mailer/Aufgabe_auto-mailer.docx
Normal file
BIN
m122/LB2_auto-mailer/Aufgabe_auto-mailer.docx
Normal file
Binary file not shown.
BIN
m122/LB2_auto-mailer/Aufgabe_auto-mailer.pdf
Normal file
BIN
m122/LB2_auto-mailer/Aufgabe_auto-mailer.pdf
Normal file
Binary file not shown.
BIN
m122/LB2_auto-mailer/mailBeilage1.pdf
Normal file
BIN
m122/LB2_auto-mailer/mailBeilage1.pdf
Normal file
Binary file not shown.
BIN
m122/LB2_auto-mailer/mailBeilage2.pdf
Normal file
BIN
m122/LB2_auto-mailer/mailBeilage2.pdf
Normal file
Binary file not shown.
BIN
m122/LB2_auto-mailer/mail_ps1.zip
Normal file
BIN
m122/LB2_auto-mailer/mail_ps1.zip
Normal file
Binary file not shown.
48
m122/LB2_auto-mailer/mail_via_tam.ps1
Normal file
48
m122/LB2_auto-mailer/mail_via_tam.ps1
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# man kann auch eine Liste von Adresssaten angeben a@xy.com, b@xy.com
|
||||||
|
$to = "harald.mueller@bluewin.ch"
|
||||||
|
$cc = ""
|
||||||
|
$bcc = ""
|
||||||
|
|
||||||
|
$subject = "Email Subject"
|
||||||
|
$body = "Hallo "+$To.Split("@")[0]
|
||||||
|
$body += "`n"
|
||||||
|
$body += "`n`nSchön, dass das klappt mit dem Mail!"
|
||||||
|
$body += "`n"
|
||||||
|
$body += "`nMit freundlichen Grüssen"
|
||||||
|
$body += "`nHarald Müller"
|
||||||
|
|
||||||
|
|
||||||
|
$SMTPServer = "mta.tam.ch" # Mailserver der Berufsschulen des Kantons Zürich
|
||||||
|
$SMTPPort = "587" # SSL-Port ist 587, Normal-Port wäre 465, man müsste dann aber "$SMTP_objekt.EnableSSL = $false" setzen
|
||||||
|
# vorname.nachname@edu.tbz.ch
|
||||||
|
$Username = "harald.mueller@tbz.ch"
|
||||||
|
$Password = "" # Hier Passwort eingeben
|
||||||
|
|
||||||
|
|
||||||
|
$Message_Objekt = New-Object System.Net.Mail.MailMessage
|
||||||
|
$Message_Objekt.from = $username
|
||||||
|
$Message_Objekt.subject = $subject
|
||||||
|
$Message_Objekt.body = $body
|
||||||
|
$Message_Objekt.to.add($to)
|
||||||
|
if ($cc.Length -gt 5) { # falls ein cc angegeben wurde
|
||||||
|
$Message_Objekt.cc.add($cc)
|
||||||
|
}
|
||||||
|
if ($bcc.Length -gt 5) { # falls ein bcc angegeben wurde
|
||||||
|
$Message_Objekt.Bcc.add($bcc)
|
||||||
|
}
|
||||||
|
|
||||||
|
$Message_Objekt.Attachments.add("C:\Users\harald\OneDrive - TBZ\M122-AutomMitSkriptenPS\05_Konkrete_Aufgabenstellungen\auto-mailer\mailBeilage1.pdf")
|
||||||
|
|
||||||
|
# es würde auch folgendes gehen
|
||||||
|
#[array]$attachmentArr = @()
|
||||||
|
#$attachmentArr = "mailBeilage1.pdf", "mailBeilage2.pdf"
|
||||||
|
|
||||||
|
#foreach ($a in $attachmentArr) { # falls mehr als eine Datei angegeben wurde wird jedes addiert
|
||||||
|
# $Message_Objekt.Attachments.add($a)
|
||||||
|
#}
|
||||||
|
|
||||||
|
$SMTP_objekt = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
|
||||||
|
$SMTP_objekt.EnableSSL = $true # $False setzen, wenn man den Normal-Port nimmt
|
||||||
|
$SMTP_objekt.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
|
||||||
|
$SMTP_objekt.send($Message_Objekt)
|
||||||
|
write-host "Mail Sent"
|
BIN
m122/LB2_auto-mailer/mail_via_tam.zip
Normal file
BIN
m122/LB2_auto-mailer/mail_via_tam.zip
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load Diff
70
m122/LB2_emailadressen-erstellen/README.md
Normal file
70
m122/LB2_emailadressen-erstellen/README.md
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
# LB2 Aufgabenstellung
|
||||||
|
|
||||||
|
## Emailadressen aus Namensdatei erstellen
|
||||||
|
|
||||||
|
|
||||||
|
**Ausgangslage**
|
||||||
|
|
||||||
|
Sie sind in der internen Informatik der TBZ und Sie
|
||||||
|
bekommen für den bevorstehenden Schulanfang eine
|
||||||
|
Liste von Namen, die alle eine neue Emailadressen
|
||||||
|
bekommen sollen.
|
||||||
|
|
||||||
|
Zur Emailadresse soll auch ein Initialpasswort
|
||||||
|
generiert werden. Emailadressen und Passwörter
|
||||||
|
müssen "korrekte" Zeichen enthalten. Also keine
|
||||||
|
Klammern, Apostrophe, Akzente usw.
|
||||||
|
|
||||||
|
Gefragt sind jetzt 2 Dinge:
|
||||||
|
- Sie müssen, um das System zu füttern, eine
|
||||||
|
Liste aller Emailadressen und (dazugehörige,
|
||||||
|
automatisch generierte) Passwörter in einer
|
||||||
|
Datei namens **mailimports-summer-YYYY.csv**
|
||||||
|
erstellen lassen.
|
||||||
|
- Sie müssen allen Personen, die eine neue
|
||||||
|
Emailadresse erhalten, deren neue Emailadresse
|
||||||
|
und ihr Initialpasswort in einem Brief mitteilen.
|
||||||
|
Dazu müssen Sie ein ausdruckbaren Brief erstellen.
|
||||||
|
|
||||||
|
**Resultat 1**
|
||||||
|
|
||||||
|
[GenerierteEmailadresse];[GeneriertesPasswort]
|
||||||
|
[GenerierteEmailadresse];[GeneriertesPasswort]
|
||||||
|
...
|
||||||
|
[GenerierteEmailadresse];[GeneriertesPasswort]
|
||||||
|
|
||||||
|
|
||||||
|
**Resultat 2**
|
||||||
|
|
||||||
|
Technische Berufsschule Zürich
|
||||||
|
Ausstellungsstrasse 70
|
||||||
|
8005 Zürich
|
||||||
|
|
||||||
|
Zürich, den [DD.MM.YYYY]
|
||||||
|
|
||||||
|
[Vorname] [Nachname]
|
||||||
|
[Strasse] [Nummer]
|
||||||
|
[Postleitzahl] [Ort]
|
||||||
|
|
||||||
|
|
||||||
|
Lieber [Vorname]
|
||||||
|
|
||||||
|
Es freut uns, Sie im neuen Schuljahr begrüssen zu dürfen.
|
||||||
|
Damit Sie am ersten Tag sich in unsere Systeme einloggen
|
||||||
|
können, erhalten Sie hier Ihre neue Emailadresse und Ihr
|
||||||
|
Initialpasswort, das Sie beim ersten Login wechseln müssen.
|
||||||
|
|
||||||
|
Emailadresse: [GenerierteEmailadresse]
|
||||||
|
Passwort: [GeneriertesPasswort]
|
||||||
|
|
||||||
|
|
||||||
|
Mit freundlichen Grüssen
|
||||||
|
|
||||||
|
IhrVorname IhrNachname
|
||||||
|
(TBZ-IT-Service)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
admin.it@tbz.ch, Abt. IT: +41 44 446 96 60, Rektorat: +41 44 446 96 00
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user