Linux für Fachinformatiker / LPIC-1 Vorbereitung / FI17-SI1
- Unterrichtsmaterialien
- Arbeitsumgebung
- Hyper-V Einrichten
- Aufgabe Dateipfade
- Thema Dateisysteme
- Aufgabe Ordnerbaum
- Aufgabe Reguläre Ausdrücke
- Aufgabe Pipeline
- LVM - Logical Volume Manager
- Paketsysteme
- Virtualisierung
- Aufgabe
vi - Aufgabe Berechtigungen
- Aufgabe SSH
- SSH / SFTP-Übersicht
- SSH-Dateien
- Domain Name System
- Aufgabe
for-Schleife - Aufgabe
if/test
Unterrichtsmaterialien
- Live DVD
- https://learning.lpi.org/pdfstore/LPI-Learning-Material-101-500-de.pdf Andere Sprachen
- https://learning.lpi.org/pdfstore/LPI-Learning-Material-102-500-de.pdf Andere Sprachen
- Checkliste LPIC_Themen
- Katzenbilder
Folien
- Geschichte und Grundbegriffe
- Einführung in die Kommandozeile
- Syntax der Kommandozeile
- Datenträger und Dateisysteme
- Prozesse und Benutzer
- Softwareinstallation und Paketsysteme
- Thema Reguläre Ausdrücke: Handbuch, Kapitel 103.7, https://regexone.com/,
~$ man 7 regex - Thema Pipelining: Handbuch, Kapitel 103.2
- Netzwerke
- Mitschrift Manuelle Installation
- CPU-Architektur
Shell dumps
Arbeitsumgebung
Hyper-V mit Live DVD
- Externer Switch
- openssh-server u. authorized_keys
Hyper-V mit Manueller Installation
- Externer Switch
- →
/etc/network/interfaces:auto eth0u.iface eth0 inet dhcp - openssh-server u. authorized_keys
WSL mit Debian (
\> wsl --install debian)- WSL Settings
Netzwerk auf MirroredNAT reicht eigentlich - Private Key für Login auf Live u. Manual
- WSL Settings
Shellscript Webserver
(auf wsl) webserver.sh
Ausführungsrechte nicht vergessen!
~$ ncat -klp 1024 -c webserver.sh
Hyper-V Einrichten
"Windows-Features aktivieren oder deaktivieren"
- Hyper-V
- Windows-Subsystem für Linux
Windows-Server
Neuer virtueller Computer
- Name: egal
- Generation 2 (wegen UEFI-Boot)
Arbeitsspeicher: 2048 MB, oder mehr
- Dynamischen Speicher deaktivieren
- Festplatte: egal, sollte aber vorhaden sein
- Installationsmedium: live-dvd.iso
- Netzwerk: default Switch oder externer Switch
Rechtsklick auf die Maschine → Einstellungen
- → Sicherheit → "Sicheren Start" ausschalten
- → Firmware → DVD-Laufwerk nach oben etzen
Aufgabe Dateipfade
Benutzt ls um folgende Ausgaben anzuzeigen:
-r--r--r-- 1 root root 12M 28. Sep 06:08 /boot/vmlinuz
-r--r--r-- 1 root root 12142528 28. Sep 06:08 vmlinuz
-r--r--r-- 1 root root 12M 28. Sep 06:08 ../boot/vmlinuz
-r--r--r-- 1 root root 12M 28. Sep 06:08 ../vmlinuz
^ Größenangabe ^ Pfad
Antwort als Screenshot im Privatchat via Teams.
Hinweis
Es braucht mehrere Aufrufe von ls um alle Zeilen zu erzeugen.
Zusatz
Erledigt die Aufrufe für alle Anzeigen in einer einzigen Zeile, so dass die Ausgaben direkt untereinander stehen.
Thema Dateisysteme
Siehe auch: Folien von Tag 2 + 3
Aufgabe Ordnerbaum
Nutzt mkdir und touch um unten stehende Verzeichnisse und Dateien zu Erzeugen.
Mit tree lässt sich die Ausgabe überprüfen. Alle Bundesländer sind Ordner, die Namen der Bahnhöfe sind Dateien.
live@live:~$ tree -F DE
DE/
├── Brandenburg/
│ ├── Berlin/
│ │ ├── Berlin Hbf
│ │ ├── Berlin Jungfernheide
│ │ ├── Berlin-Spandau
│ │ ├── Berlin Südkreuz
│ │ └── Potsdamer Platz
│ ├── Blankenfelde (Teltow-Fläming)
│ ├── Doberlug-Kirchhain
│ ├── Elsterwerda
│ └── Golßen (Niederlausitz)
└── Sachsen/
├── Chemnitz Hbf
├── Erlau (Sachsen)
├── Limmritz (Sachsen)
├── Prösen
├── Prösen West
└── Riesa
4 directories, 15 files
Sendet mir als Antwort einen Screenshot via Teams (per Privatnachricht).
Hinweis
Beachtet insbesondere Leerzeichen, Bindestriche und Klammern, sowie Groß- und Kleinschreibung.
Hinweis
- Durch Nutzung von
cdkann man Schreibarbeit sparen - Fehler lassen sich durch
mvundrm/rmdirkorrigieren
Zusatz
Man kann den Gesamten Datei- und Ordnerbaum mit zwei Programmaufrufen erstellen. Postet die Kommandos in Teams.
Aufgabe Reguläre Ausdrücke
Geht die Tutorials auf https://regexone.com/ bis zur "Lesson 15" durch. Schreibt mich in Teams an, wenn ihr dort angekommen seid.
Beachtet bei den Aufgaben "Match" und "Skip". Sinn von einem RegEx ist, dass er auf bestimmte Texte zutrifft, auf andere aber gerade nicht.
Hinweis
Die Tutorials lassen sich im Linux-Terminal nachbilden via:
~$ grep -P "…"
Hinweis
Bei einigen Lessons kann man mogeln. Achtet bitte darauf, welcher Lösungsweg im Text beschrieben wird. Versucht die Aufgabe so zu lösen wie jeweils beabsichtigt.
Zusatz
Auf der Seite gibt es auch noch "Practice Problems". (Aber pingt mich an, wenn ihr bei Lesson 15 seid).
Aufgabe Pipeline
Überfliegt die man-pages zu den Mini-Pipeline-Programmen
wc, grep, sort, uniq, cut, tr.
Nutzt diese Programme auf der Textdatei mit dem Berliner Straßenverzeichnis um folgende Fragen zu beantworten:
Wie viele Zeilen hat die Datei?
Wie viele verschiedene Straßen- und Platznamen gibt es in Berlin?
- Die Namen sollen nur einmal gezählt werden, auch wenn der Eintrag in mehreren Bezirken vorkommt
Wie viele verschiedene Stadtteile gibt es laut Liste?
Wie viele Straßen (/Plätze/Wege/usw.) gibt es in Adlershof?
Welche Straßen erstrecken sich durch mehr als fünf Stadtteile
Hinweis
Straßennamen können Leerzeichen enthalten, Bezirke sind aber glücklicherweise durch Tabs vom Straßennamen abgesetzt.
LVM - Logical Volume Manager
Paketsysteme
| Offline Tools | dpkg | rpm | |
|---|---|---|---|
| Info Paketdatei | dpkg -I datei.deb | rpm -qip datei.rpm | |
| Info Paket | (nur deb-datei oder apt) | rpm -qi NAME | |
| Dateien in Paketdatei | dpkg -c datei.deb | rpm -qlp datei.rpm | |
| Dateien in Paket | dpkg -L NAME | rpm -ql NAME | |
| Liste install. Pakete | dpkg --get-selections | rpm -qa | |
| Installation Paketdatei | dpkg -i datei.deb | rpm -i datei.rpm | |
| Update aus Paketdatei | (wie Installation) | rpm -U datei.rpm | |
| Paket neu einrichten | dpkg-reconfigure NAME | ??? | |
| Deinstallation Paket | dpkg -r NAME | rpm -e NAME | |
dpkg -P NAME (purge) | |||
| Paketzugehörigk. Datei | dpkg-query -S /datei | rpm -qf /datei | |
| Online Tools | apt | yum / dnf | zypper |
| Stichwortsuche | apt-cache search REGEX | yum search REGEX | zypper se WORT |
dnf search REGEX | |||
| Paketinfo | apt-cache show NAME | yum info NAME | zypper info NAME |
dnf info NAME | |||
| Dateien in Paket | apt-file list NAME | dnf repoquery -l NAME | |
| Liste install. Pakete | (siehe dpkg) | dnf list --installed | zypper se -i |
| Abfrage Repository | apt-get update | (nur automatisch???) | zypper refresh |
| Online-Install | apt-get install NAME | yum install NAME | zypper in NAME |
yum update NAME | |||
dnf install NAME | |||
dnf upgrade NAME | |||
| Abhängigk. erfüllen | apt-get install -f | ??? | |
| Deinstallation | apt-get remove NAME | dnf remove NAME | zypper rm |
apt-get purge NAME | |||
| Softwareupgrade | apt-get upgrade | yum update | |
dnf upgrade | |||
| Paketzugehörigk. Datei | apt-file search /datei | yum whatprovides /datei | zypper se --provides /datei |
dnf provides /datei | |||
| Konfiguration | /etc/apt/sources.list | yum repolist all | zypper repos |
dnf repolist | |||
yum-config-manager --add-repo http://... | |||
dnf config-manager --add-repo http:// | |||
yum-config-manager --disable REPO | zypper modifyrepo -d REPO | ||
dnf config-manager disable REPO | |||
yum-config-manager --enable REPO | zypper modifyrepo -e REPO | ||
dnf config-manager enable REPO |
Virtualisierung
| CPU | RAM | Files | User | Net | Hardw | CPU-Inst | Bemerkungen | |
|---|---|---|---|---|---|---|---|---|
| Multitasking | X | X | ||||||
| Chroot | X | X | X | |||||
| (Usermode Linux) | X | X | X | X | X | Braucht keinen HW-Support, Nur auf Linux, Veraltet | ||
| Container/Namespaces | X | X | (X) | (X) | (X) | PID/ UIDs werden zum Host-System gemapped, Docker, LXC | ||
| Paravirtualisierung | X | X | X | X | X | (X) | Hypervisor mit Effizienzfeatures, braucht Gastunterstützung, Xen | |
| Hypervisor | X | X | X | X | X | X | Braucht CPU-Support (MMU, Privilegientrennung), HyperV, KVM, VirtualBox, VMWare | |
| Emulation | X | X | X | X | X | X | X | "Interpreter" f. Instruktionscode, sehr langsam, qemu, Konsolenemulatoren |
Aufgabe vi
Geht das Programm vimtutor bis zum Ende durch. Gebt anschließend in Teams Bescheid.
(vimtutor wird ggf. mit dem Paket "vim" installiert)
Hinweis (Für WSL-Nutzer)
Einige Tastenkombinationen funktionieren schlecht im Windows-Terminal.
Zusatz
- lade das Berliner Straßenverzeichnis zweimal herunter
- ändere ein paar Straßennamen in einer der Kopien
- öffne beide Dateien gleichzeitig mit
vimdiff datei1 datei2 - mit
Strg + W→Bewegungkann man zwischen den Panelen wechseln
Zusatz
Sucht online nach dem "besten", "ultimativen", "idealen" .vimrc-File. ;-)
Aufgabe Berechtigungen
Legt die vier Dateien A, B C, und D an, mit Berechtigungen wie folgt.
Nutzt beim setzen der Berechtigungen via chmod die numerischen angaben.
Schickt via Teams den Screenshot, in dem die Ziffernangaben erkennbar sind.
---------- A
-r---w---x B
--w-r-x-w- C
-rwx---rwx D
Aufgabe SSH
Benutzt SSH um euch auf dem Dozentenrechner einzuloggen:
~$ ssh user@10.0.7.67 Passwort: userHost-Fingerprint:
SHA256:rDNRk5wBCNLyU3vHrfMmz3yDXyyxdGxQ1uTTiHbSnV0Legt eine Datei mit eurem Namen auf dem Dozentenrechner an.
Installiert einen SSH-Server auf eurer Linux-VM und loggt euch vom (Windoze-)Hostsystem darauf ein.
Paket: openssh-server
IP herausfinden via:
~$ ip address listPasswort vom Live-User setzen:
~$ passwd(leere Passworte sind nicht gültig)Unter Windows:
\> ssh live@HOSTGeneriert ein SSH-Schlüsselpaar und installiert es auf dem Dozentenrechner
~$ ssh-keygen ... ... ... ~$ ssh-copy-id user@10.0.7.67 ~$ ssh user@10.0.7.67→ sollte keine Passwortabfrage mehr geben
SSH / SFTP-Übersicht
SFTP
(gibt es auch in Windows)
Das SFTP-Programm benutzt eine interaktive Subshell
\> sftp user@host
> cd remote_ordner
> pwd
> lcd lokaler_ordner
> lpwd
> ls
> lls
> get remote_file
> put local_file
SCP
(gibt es auch in Windows)
\> scp user@host:datei ./
\> scp datei user@host:
(Remote-Pfade müssen einen Doppelpunkt enthalten)
Allein via ssh
(braucht eine Unix-Shell)
~$ ssh user@host cat datei > lokale_datei
~$ cat lokale_datei |ssh user@host cat ">"datei
(Anführungszeichen beachten)
Tar-Streams durch remote STDIN/STDOUT
~$ ssh user@host tar -c ordner | tar -x
~$ tar -c ordner |ssh user@host tar -x
RSync
Bedienung ähnlich wie scp. Effizient bei mehrfacher Übertragung der gleichen Dateien. Braucht rsync auf der Remote-Seite.
\> rsync user@host:datei ./
\> rsync datei user@host:
SSH-Dateien
~/.ssh/known_hosts- Bekannt Rechner, deren Fingerprint mein Client kennengelernt hat
~/.ssh/id_*,~/.ssh/id_*.pub- identity-File, aka. Private- u. Public-Key für eine Person. Wird vom eigenen Client zur Authentifizierung an Remote-Rechnern verwendet.
~/.ssh/authorized_keys- Identities (d.h. Public-Keys) von Personen, die sich via SSH einloggen dürfen.
Domain Name System
Beispiel Domainname
www.plutz.net → eigentlich www.plutz.net. (mit abschließendem Punkt)
DNS-Namen werden von hinten nach vorne gelesen.
| Root-Zone | Top-Level-Domain (TLD) | 2nd-Level-Domain | Subdomain |
|---|---|---|---|
| . | net | plutz | www |
Beispiel rekursive Abfrage
Der DNS-Rekursor muss Kenntnis über die Root-Nameserver haben
dig @193.0.14.129 NS net.(Anfrage an europäischen RIPE-Nameserver)- → Zuständig für
net.-Zone: z.B.192.12.94.30(Verisign)
- → Zuständig für
dig @192.12.94.30 NS plutz.net.(Anfrage an Verisign)- → Zuständig für
plutz.net.: z.B.46.38.225.225(Netcup)
- → Zuständig für
dig @46.38.225.225 NS www.plutz.net.(Anfrage an Netcup)- → kein untergeordneter Nameserver
dig @46.38.225.225 A www.plutz.net(Anfrage weiterhin an Netcup)- →
46.38.234.157(der eigentliche Webserver!)
- →
→ Rekursive Abfragen werden idR. nicht direkt von Client-PCs aus gemacht. Ein lokaler Nameserver führt rekursive Abfragen durch und cached die Ergebnisse. Zusätzliche kann er lokale Hostnamen auflösen und ggf. öffentliche Einträge übersteuern (Jugendschutz-, Zensur-, u. Werbefilter).
Aufgabe for-Schleife
Nutzt convert (aus dem Paket imagemagick) um alle Katzenbilder von .jpg nach .avif zu konvertieren.
Schreibt mir die Kommandozeile, die dafür genutzt wurde via Teams.
Hinweis
Es ist OK, wenn die Ausgabedateien auf .jpg.avif enden.
Zusatz
Lasst alle .avif-Dateien in einem Ordner "bilder_avif" anlegen, der neben dem "Wikimedia_Katzenbilder"-Ordner liegt.
Zusatz
Recherchiert, wie man die doppelte Dateiendung loswerden kann, so dass die Namen einfach auf .avif (ohne .jpg) enden.
Aufgabe if / test
Schreibe ein Shellscript, das
- Einen Pfad von Stdin liest
Handelt es sich bei dem Pfad um ein Verzeichnis
- so wird mit
lsder Verzeichnisinhalt gelistet
- so wird mit
Handelt es sich um eine Datei
- wird mit
lessdie Datei angezeigt
- wird mit
andernfalls (ungültiger Pfad, Spezialdatei, etc.)
- wird eine Fehlermeldung ausgegeben
Hinweis
Das test-Programm unterstützt verschiedene Tests. Siehe man-Page.
Hinweis
if-Abfragen kann man verschachteln
if …; then
else
if …; then
fi
fi
oder elif benutzen (lesbarer)
if …; then
elif …; then
elif …; then
else
fi
Zusatz
Der Pfad soll nicht von stdin gelesen werden, sondern als Parameter an das Script übergeben werden. Aufrufparameter stehen in den Spezialvariablen ${0}, ${1}, ${2}, usw.








