muh
BIN
m122/Lektion10/.DS_Store
vendored
Normal file
BIN
m122/Lektion10/Praesentation/.DS_Store
vendored
Normal file
BIN
m122/Lektion10/Praesentation/Bash_L3.pdf
Normal file
204
m122/Lektion10/Praesentation/Bash_L3.tex
Normal file
@ -0,0 +1,204 @@
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% Beamer Presentation
|
||||
% LaTeX Template
|
||||
% Version 1.0 (10/11/12)
|
||||
%
|
||||
% This template has been downloaded from:
|
||||
% http://www.LaTeXTemplates.com
|
||||
%
|
||||
% License:
|
||||
% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/)
|
||||
%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
%----------------------------------------------------------------------------------------
|
||||
% PACKAGES AND THEMES
|
||||
%----------------------------------------------------------------------------------------
|
||||
|
||||
\documentclass{beamer}
|
||||
|
||||
\usepackage{listings}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{lastpage}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{soul}
|
||||
|
||||
\usepackage{lmodern} % Latin Modern
|
||||
|
||||
\usepackage[utf8]{inputenc}
|
||||
|
||||
\definecolor{beamer@zueriblue}{HTML}{009EE1}
|
||||
\definecolor{beamer@lightblue}{HTML}{8BCCE8}\DeclareUnicodeCharacter{00A0}{ }
|
||||
|
||||
\mode<presentation> {
|
||||
|
||||
% The Beamer class comes with a number of default slide themes
|
||||
% which change the colors and layouts of slides. Below this is a list
|
||||
% of all the themes, uncomment each in turn to see what they look like.
|
||||
|
||||
%\usetheme{default}
|
||||
%\usetheme{AnnArbor}
|
||||
%\usetheme{Antibes}
|
||||
%\usetheme{Bergen}
|
||||
%\usetheme{Berkeley}
|
||||
%\usetheme{Berlin}
|
||||
%\usetheme{Boadilla}
|
||||
%\usetheme{CambridgeUS}
|
||||
%\usetheme{Copenhagen}
|
||||
%\usetheme{Darmstadt}
|
||||
%\usetheme{Dresden}
|
||||
%\usetheme{Frankfurt}
|
||||
%\usetheme{Goettingen}
|
||||
%\usetheme{Hannover}
|
||||
%\usetheme{Ilmenau}
|
||||
%\usetheme{JuanLesPins}
|
||||
%\usetheme{Luebeck}
|
||||
%\usetheme{Madrid}
|
||||
%\usetheme{Malmoe}
|
||||
%\usetheme{Marburg}
|
||||
%\usetheme{Montpellier}
|
||||
%\usetheme{PaloAlto}
|
||||
%\usetheme{Pittsburgh}
|
||||
%\usetheme{Rochester}
|
||||
%\usetheme{Singapore}
|
||||
%\usetheme{Szeged}
|
||||
%\usetheme{Warsaw}
|
||||
|
||||
% As well as themes, the Beamer class has a number of color themes
|
||||
% for any slide theme. Uncomment each of these in turn to see how it
|
||||
% changes the colors of your current slide theme.
|
||||
|
||||
%\usecolortheme{albatross}
|
||||
%\usecolortheme{beaver}
|
||||
%\usecolortheme{beetle}
|
||||
%\usecolortheme{crane}
|
||||
%\usecolortheme{dolphin}
|
||||
%\usecolortheme{dove}
|
||||
%\usecolortheme{fly}
|
||||
%\usecolortheme{lily}
|
||||
%\usecolortheme{orchid}
|
||||
%\usecolortheme{rose}
|
||||
%\usecolortheme{seagull}
|
||||
%\usecolortheme{seahorse}
|
||||
%\usecolortheme{whale}
|
||||
%\usecolortheme{wolverine}
|
||||
|
||||
\usetheme{Dresden}
|
||||
\setbeamercolor*{palette primary}{use=dove,fg=blue,bg=beamer@lightblue}
|
||||
|
||||
\setbeamercolor*{palette secondary}{use=dove,fg=blue,bg=beamer@lightblue}
|
||||
\setbeamercolor*{palette tertiary}{use=dove,fg=white,bg=beamer@zueriblue}
|
||||
|
||||
|
||||
%\setbeamertemplate{footline} % To remove the footer line in all slides uncomment this line
|
||||
%\setbeamertemplate{footline}[page number] % To replace the footer line in all slides with a simple slide count uncomment this line
|
||||
|
||||
%\setbeamertemplate{navigation symbols}{} % To remove the navigation symbols from the bottom of all slides uncomment this line
|
||||
}
|
||||
|
||||
\usepackage{graphicx} % Allows including images
|
||||
\usepackage{booktabs} % Allows the use of \toprule, \midrule and \bottomrule in tables
|
||||
|
||||
%----------------------------------------------------------------------------------------
|
||||
% TITLE PAGE
|
||||
%----------------------------------------------------------------------------------------
|
||||
|
||||
\title[Bash - Lektion 3]{Linux Shell - Lektion 3} % The short title appears at the bottom of every slide, the full title is only on the title page
|
||||
|
||||
\author{Mario Bischof} % Your name
|
||||
\institute[BFSU] % Your institution as it will appear on the bottom of every slide, may be shorthand to save space
|
||||
{
|
||||
Berufsfachschule Uster \\ % Your institution for the title page
|
||||
\medskip
|
||||
\href{mailto:mario.bischof@bzu.ch}{mario.bischof@bzu.ch}% Your email address
|
||||
}
|
||||
\date{\today} % Date, can be changed to a custom date
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{frame}
|
||||
\includegraphics[height=0.4in]{img/bfsulogo.jpg}
|
||||
\titlepage % Print the title page as the first slide
|
||||
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Übersicht} % Table of contents slide, comment this block out to remove it
|
||||
\tableofcontents % Throughout your presentation, if you choose to use \section{} and \subsection{} commands, these will automatically be printed on this slide as an overview of your presentation
|
||||
\end{frame}
|
||||
|
||||
%----------------------------------------------------------------------------------------
|
||||
% PRESENTATION SLIDES
|
||||
%----------------------------------------------------------------------------------------
|
||||
|
||||
%------------------------------------------------
|
||||
%------------------------------------------------
|
||||
|
||||
% A subsection can be created just before a set of slides with a common theme to further break down your presentation into chunks
|
||||
|
||||
\section[vars]{Variablen}
|
||||
\begin{frame}[fragile]
|
||||
|
||||
\frametitle{Variablen}
|
||||
\begin{itemize}
|
||||
\item Variablen werden mit dem Zuweiseungsoperator \verb|=| gesetzt.
|
||||
\item Auf den Inhalt von Variablen kann mit \verb|$| zugegriffen werden.
|
||||
\item Der Inhalt einer Variable kann geändert werden
|
||||
\end{itemize}
|
||||
|
||||
\begin{verbatim}
|
||||
[root@host /]# name="Hans"
|
||||
[root@host /]# echo $name
|
||||
Hans
|
||||
[root@host /]# name="Muster"
|
||||
[root@host /]# echo $name
|
||||
Muster
|
||||
\end{verbatim}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
|
||||
\frametitle{Variablen}
|
||||
\begin{itemize}
|
||||
\item Die Ausgabe eines Befehls kann einer Variable zugewiesen werden
|
||||
\item Der Befehl muss in \verb|$( )| gesetzt werden
|
||||
\item Der Inhalt von Variablen kann in anderen Befehlen weiterverwendet werden
|
||||
\item Variablen können kopiert werden
|
||||
\end{itemize}
|
||||
|
||||
\begin{verbatim}
|
||||
[root@host /]# datum=$(date +%Y_%m_%d)
|
||||
[root@host /]# echo $datum
|
||||
2015_10_06
|
||||
[root@host /]# touch file_$datum
|
||||
[root@host /]# ls
|
||||
file_2015_10_06
|
||||
[root@host /]# datum2=$datum; echo $datum2
|
||||
2015_10_06
|
||||
\end{verbatim}
|
||||
\end{frame}
|
||||
|
||||
\frametitle{Variablen}
|
||||
\begin{itemize}
|
||||
\item Die Ausgabe eines Befehls kann einer Variable zugewiesen werden
|
||||
\item Der Befehl muss in \verb|$( )| gesetzt werden
|
||||
\item Der Inhalt von Variablen kann in anderen Befehlen weiterverwendet werden
|
||||
\item Variablen können kopiert werden
|
||||
\end{itemize}
|
||||
|
||||
\begin{verbatim}
|
||||
[root@host /]# datum=$(date +%Y_%m_%d)
|
||||
[root@host /]# echo $datum
|
||||
2015_10_06
|
||||
[root@host /]# touch file_$datum
|
||||
[root@host /]# ls
|
||||
file_2015_10_06
|
||||
[root@host /]# datum2=$datum; echo $datum2
|
||||
2015_10_06
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\end{document}
|
77
m122/Lektion10/Praesentation/Lektion-Bash3.md
Normal file
@ -0,0 +1,77 @@
|
||||
::: frame
|
||||
![image](img/bfsulogo.jpg){height="0.4in"}
|
||||
:::
|
||||
|
||||
::: frame
|
||||
### Übersicht
|
||||
:::
|
||||
|
||||
# Variablen
|
||||
|
||||
::: frame
|
||||
### Variablen
|
||||
|
||||
- Variablen werden mit dem Zuweiseungsoperator `=` gesetzt.
|
||||
|
||||
- Auf den Inhalt von Variablen kann mit `$` zugegriffen werden.
|
||||
|
||||
- Der Inhalt einer Variable kann geändert werden
|
||||
|
||||
```{=html}
|
||||
<!-- -->
|
||||
```
|
||||
[root@host /]# name="Hans"
|
||||
[root@host /]# echo $name
|
||||
Hans
|
||||
[root@host /]# name="Muster"
|
||||
[root@host /]# echo $name
|
||||
Muster
|
||||
:::
|
||||
|
||||
::: frame
|
||||
### Variablen
|
||||
|
||||
- Die Ausgabe eines Befehls kann einer Variable zugewiesen werden
|
||||
|
||||
- Der Befehl muss in `$( )` gesetzt werden
|
||||
|
||||
- Der Inhalt von Variablen kann in anderen Befehlen weiterverwendet
|
||||
werden
|
||||
|
||||
- Variablen können kopiert werden
|
||||
|
||||
```{=html}
|
||||
<!-- -->
|
||||
```
|
||||
[root@host /]# datum=$(date +%Y_%m_%d)
|
||||
[root@host /]# echo $datum
|
||||
2015_10_06
|
||||
[root@host /]# touch file_$datum
|
||||
[root@host /]# ls
|
||||
file_2015_10_06
|
||||
[root@host /]# datum2=$datum; echo $datum2
|
||||
2015_10_06
|
||||
:::
|
||||
|
||||
### Variablen
|
||||
|
||||
- Die Ausgabe eines Befehls kann einer Variable zugewiesen werden
|
||||
|
||||
- Der Befehl muss in `$( )` gesetzt werden
|
||||
|
||||
- Der Inhalt von Variablen kann in anderen Befehlen weiterverwendet
|
||||
werden
|
||||
|
||||
- Variablen können kopiert werden
|
||||
|
||||
```{=html}
|
||||
<!-- -->
|
||||
```
|
||||
[root@host /]# datum=$(date +%Y_%m_%d)
|
||||
[root@host /]# echo $datum
|
||||
2015_10_06
|
||||
[root@host /]# touch file_$datum
|
||||
[root@host /]# ls
|
||||
file_2015_10_06
|
||||
[root@host /]# datum2=$datum; echo $datum2
|
||||
2015_10_06
|
BIN
m122/Lektion10/Praesentation/img/.DS_Store
vendored
Normal file
BIN
m122/Lektion10/Praesentation/img/bfsulogo.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
m122/Lektion10/Uebung/.DS_Store
vendored
Normal file
BIN
m122/Lektion10/Uebung/Bash_Uebung1.pdf
Normal file
BIN
m122/Lektion10/Uebung/img/.DS_Store
vendored
Normal file
BIN
m122/Lektion10/Uebung/img/bfsulogo.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
m122/Lektion10/Uebung/img/bzulogo.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
m122/Lektion10/Uebung/img/ps1.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
m122/Lektion10/Uebung/img/ps2.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
m122/Lektion10/Uebung/img/ps3.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
m122/Lektion10/Uebung/img/ps4.png
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
m122/Lektion10/Uebung/img/ps5.png
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
m122/Lektion10/Uebung/img/ps6.png
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
m122/Lektion10/Uebung/img/ps7.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
m122/Lektion10/Uebung/img/ps8.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
m122/Lektion10/Uebung/img/ps9.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
m122/Lektion10/Uebung_Loes/.DS_Store
vendored
Normal file
BIN
m122/Lektion10/Uebung_Loes/Bash_Uebung1Loes.pdf
Normal file
299
m122/Lektion10/Uebung_Loes/Bash_Uebung1Loes.tex
Normal file
@ -0,0 +1,299 @@
|
||||
\documentclass[a4paper,11pt]{report}
|
||||
%\usepackage{isolatin1}
|
||||
%\usepackage{german}
|
||||
\usepackage{float}
|
||||
\usepackage{listings}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{lastpage}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{soul}
|
||||
|
||||
\usepackage{lmodern} % Latin Modern
|
||||
|
||||
\usepackage[ngerman]{babel, translator}
|
||||
\usepackage[utf8]{inputenc}
|
||||
|
||||
|
||||
%\usepackage[ngerman]{babel, translator}
|
||||
|
||||
|
||||
%\usepackage[utf8x]{inputenc}
|
||||
\usepackage[left=2.5cm,top=2cm,right=2cm,bottom=4cm]{geometry}
|
||||
|
||||
%Code listings
|
||||
\usepackage{listings}
|
||||
\usepackage{etoolbox}
|
||||
\patchcmd{\chapter}{\thispagestyle{plain}}{\thispagestyle{fancy}}{}{}
|
||||
|
||||
|
||||
\usepackage[]{hyperref}
|
||||
\hypersetup{
|
||||
linkcolor=blue,
|
||||
pagecolor= blue,
|
||||
urlcolor= blue,
|
||||
colorlinks=true,
|
||||
pdfborder=0 0 0
|
||||
}
|
||||
\usepackage[
|
||||
nonumberlist, %keine Seitenzahlen anzeigen
|
||||
acronym, %ein Abk�rzungsverzeichnis erstellen
|
||||
toc, %Eintr�ge im Inhaltsverzeichnis
|
||||
section] %im Inhaltsverzeichnis auf section-Ebene erscheinen
|
||||
{glossaries}
|
||||
|
||||
|
||||
\usepackage{hyperref}
|
||||
|
||||
%Ein eigenes Symbolverzeichnis erstellen
|
||||
\newglossary[slg]{symbolslist}{syi}{syg}{Symbolverzeichnis}
|
||||
|
||||
%Den Punkt am Ende jeder Beschreibung deaktivieren
|
||||
\renewcommand*{\glspostdescription}{}
|
||||
|
||||
|
||||
|
||||
%Glossar-Befehle anschalten
|
||||
\makeglossaries
|
||||
|
||||
%Diese Befehle sortieren die Eintr�ge in den
|
||||
%einzelnen Listen:
|
||||
%makeindex -s datei.ist -t datei.alg -o datei.acr datei.acn
|
||||
%makeindex -s datei.ist -t datei.glg -o datei.gls datei.glo
|
||||
%makeindex -s datei.ist -t datei.slg -o datei.syi datei.syg
|
||||
|
||||
|
||||
|
||||
% define acronyms here
|
||||
\newacronym{PDF}{PDF}{Portable Document Format}
|
||||
\newacronym{APDU}{APDU}{Application Protocol Data Unit}
|
||||
\newacronym{AGPL}{AGPL}{Affero General Public License}
|
||||
\newacronym{GPL}{GPL}{General Public License}
|
||||
\newacronym{LGPL}{LGPL}{Lesser General Public License}
|
||||
|
||||
|
||||
\newacronym{DCT}{DCT}{Discrete Cosine Transform}
|
||||
\newacronym{TTA}{TTA}{Trusted Timestamp Authority}
|
||||
\newacronym{OCSP}{OCSP}{Online Certificate Status Protocol}
|
||||
\newacronym{PKI}{PKI}{Public Key Infrastructure}
|
||||
|
||||
|
||||
|
||||
%\newacronym{BDD}{BDD}{Behaviour Driven Development\protect\glsadd{glos:BDD}}
|
||||
|
||||
\newglossaryentry{Application Protocol Data Unit}
|
||||
{
|
||||
name={Application Protocol Data Unit},
|
||||
description={blablabla}
|
||||
}
|
||||
|
||||
\newglossaryentry{Copyleft}
|
||||
{
|
||||
name={Copyleft},
|
||||
description={The copyleft ist the obligation required by the GLP (or AGPL) license to offer the source code of a work (and every derivative of it) to the public (open source). Copy{\bf{left}} can also be considered as the opposite of copy{\bf{right}}. }
|
||||
}
|
||||
|
||||
|
||||
%Befehle f�r Glossar
|
||||
|
||||
\usepackage{helvet}
|
||||
\renewcommand{\familydefault}{\sfdefault}
|
||||
|
||||
\renewcommand\contentsname{Inhaltsverzeichnis}
|
||||
|
||||
|
||||
%Einstellungen f??r code listings
|
||||
\lstset{inputencoding=utf8, language=Java,tabsize=2, basicstyle=\small,breaklines=true,showstringspaces=false}
|
||||
\pagestyle{fancy}
|
||||
\setlength{\headheight}{38pt}
|
||||
\setlength{\headwidth}{470pt}
|
||||
\renewcommand{\headrule}{\hskip -\leftskip{\bf \quad \quad}\vbox to 5pt{\hbox to 455pt{\hrulefill}}}
|
||||
\renewcommand{\footrule}{\hskip-\leftskip{\bf \quad \quad}{\hbox to 450 pt{\hrulefill}\newline}}
|
||||
\fancyhf{}
|
||||
\fancyheadoffset[L]{1cm}
|
||||
\fancyfootoffset[L]{1cm}
|
||||
%Kopfzeile links bzw. innen
|
||||
\fancyhead[L]{\includegraphics[height=0.6in]{img/bfsulogo.jpg}}
|
||||
%Kopfzeile mittig
|
||||
\fancyhead[C]{}
|
||||
%Kopfzeile rechts bzw. au??????????�?en
|
||||
\fancyhead[R]{\hspace{10pt} Modul 122\\Abläufe mit Skripts/Makros automatisieren\\ \rightmark }
|
||||
\fancyheadoffset[L]{1cm}
|
||||
\fancyfootoffset[L]{1cm}
|
||||
%Linie oben
|
||||
\renewcommand{\headrulewidth}{0.7pt}
|
||||
%Fu??????????�?zeile mittig
|
||||
\cfoot{\vspace*{6mm}page:\ \thepage\ of \pageref{LastPage}}
|
||||
\fancyfoot[R]{}
|
||||
% footnote in footer
|
||||
\newcommand{\fancyfootnotetext}[2]{%
|
||||
\fancypagestyle{dingens}{%
|
||||
\fancyfoot[LO,RE]{\parbox{12cm}{\footnotemark[#1]\footnotesize #2}}%
|
||||
}%
|
||||
\thispagestyle{dingens}%
|
||||
}
|
||||
%Linie unten
|
||||
\renewcommand{\footrulewidth}{0.5pt}
|
||||
|
||||
\vspace*{15mm}
|
||||
\textwidth 450pt
|
||||
|
||||
|
||||
|
||||
\begin{document}
|
||||
|
||||
\setcounter{tocdepth}{5}
|
||||
|
||||
|
||||
|
||||
%\thispagestyle{empty}
|
||||
|
||||
\begin{center}
|
||||
|
||||
\vspace{48pt}
|
||||
|
||||
|
||||
\vspace{15pt}
|
||||
\begin{huge}
|
||||
\end{huge}
|
||||
\vspace{10pt}
|
||||
\begin{center}
|
||||
\begin{Large}
|
||||
Bash\\ \vspace{20pt}
|
||||
Übung 1 - Beispiellösungen
|
||||
\end{Large}
|
||||
\end{center}
|
||||
|
||||
\vspace{10pt}
|
||||
|
||||
\end{center}
|
||||
|
||||
\begin{scriptsize}
|
||||
\begin{center}
|
||||
\noindent Mario Bischof
|
||||
\end{center}
|
||||
\end{scriptsize}
|
||||
\newpage
|
||||
\noindent{\bf{Aufgabe 1 - Repetition: Navigieren in Verzeichnissen}}
|
||||
\begin{quote}
|
||||
\begin{enumerate}
|
||||
\item \begin{verbatim}
|
||||
[root@localhost: ] cd ~
|
||||
\end{verbatim}
|
||||
\item \begin{verbatim}
|
||||
[root@localhost: ~ ] cd /var/log
|
||||
\end{verbatim}
|
||||
\item \begin{verbatim}
|
||||
[root@localhost: log ] cd /etc/udev
|
||||
\end{verbatim}
|
||||
\item \begin{verbatim}
|
||||
[root@localhost: udev ] cd ..
|
||||
\end{verbatim}
|
||||
\item \begin{verbatim}
|
||||
[root@localhost: udev ] cd network
|
||||
\end{verbatim}
|
||||
\item \begin{verbatim}
|
||||
[root@localhost: network ] cd ../../dev
|
||||
\end{verbatim}
|
||||
\end{enumerate}\vspace{10pt}
|
||||
\end{quote}
|
||||
\noindent {\bf{Aufgabe 2 - stdout, stdin, stderr:}}
|
||||
\begin{quote}
|
||||
{\bf{a)}} \begin{verbatim}
|
||||
ls -z 2> /root/errorsLs.log
|
||||
\end{verbatim}
|
||||
{\bf{b)}} \begin{verbatim}
|
||||
echo "sdfonsdodsf" > datei.txt
|
||||
cat datei.txt > datei2.txt
|
||||
cat datei.txt > datei2.txt
|
||||
cat datei2.txt
|
||||
cat datei.txt >> datei2.txt
|
||||
cat datei.txt >> datei2.txt
|
||||
cat datei2.txt
|
||||
# Unterschied, >> hängt Inhalt an, > überschreibt Inhalt
|
||||
cat datei.txt >> datei.txt
|
||||
# Erzeugt Fehler, Quell- ist Zieldatei
|
||||
\end{verbatim}
|
||||
{\bf{c)}}
|
||||
\begin{verbatim}
|
||||
whoami > info.txt
|
||||
\end{verbatim}
|
||||
{\bf{d)}}
|
||||
\begin{verbatim}
|
||||
id >> info.txt
|
||||
\end{verbatim}
|
||||
{\bf{e)}}
|
||||
\begin{verbatim}
|
||||
cat info-txt | wc -w
|
||||
\end{verbatim}
|
||||
\end{quote}
|
||||
\noindent {\bf{Aufgabe 3 - grep, cut:}}
|
||||
\begin{quote}
|
||||
{\bf{a)}}
|
||||
\begin{verbatim}
|
||||
cat file.txt | grep obelix
|
||||
cat file.txt | grep 2
|
||||
cat file.txt | grep e
|
||||
cat file.txt | grep -v gamma
|
||||
cat file.txt | grep -E "1|2|3"
|
||||
\end{verbatim}
|
||||
|
||||
{\bf{b)}}
|
||||
\begin{verbatim}
|
||||
cat file.txt | cut -d ':' -f 1
|
||||
cat file.txt | cut -d ':' -f 2
|
||||
cat file.txt | cut -d ':' -f 3
|
||||
\end{verbatim}
|
||||
\vspace{10pt}
|
||||
\end{quote}
|
||||
|
||||
{\bf{Aufgabe 4 - Wildcards:}}
|
||||
\begin{quote}
|
||||
\begin{enumerate}
|
||||
\item \verb|mkdir ~/Docs|
|
||||
\item \verb|touch ~/Docs/file{1..10}|
|
||||
\item \verb|rm -f ~/Docs/file1*|
|
||||
\item \verb|rm -f ~/Docs/file[247]|
|
||||
\item \verb|rm -f ~/Docs/* oder rm -f ~/Docs/file*|
|
||||
\end{enumerate}
|
||||
|
||||
\begin{enumerate}
|
||||
\item \verb|mkdir Files|, \verb|cd Files|
|
||||
\item \verb|touch file{1..10}| (Erzeugt fileX von 1 bis 10)
|
||||
\item \verb|cd ..| , \verb|cp -R Files Files2|
|
||||
\item \verb|cp -R Files Files2/Files3|
|
||||
\item \verb|mv Files Files1|
|
||||
\item \verb|rm -f *|
|
||||
\end{enumerate}
|
||||
\end{quote}
|
||||
\vspace{10pt}
|
||||
{\bf{Aufgabe 5 - Tilde expansions:}}
|
||||
\begin{quote}
|
||||
\begin{itemize}
|
||||
\item Siehe Präsentationsfolien
|
||||
\end{itemize}
|
||||
\end{quote}
|
||||
|
||||
\vspace{10pt}
|
||||
{\bf{Aufgabe 6 - Für Fortgeschrittene:}}
|
||||
\begin{quote}
|
||||
\begin{itemize}
|
||||
\item
|
||||
\begin{verbatim}
|
||||
Findet alle Zeilen, welche eine PCI-Adresse beinhalten
|
||||
\end{verbatim}
|
||||
\item
|
||||
\begin{verbatim}
|
||||
Findet IP-Adressen
|
||||
\end{verbatim}
|
||||
\item
|
||||
\begin{verbatim}
|
||||
Findet alle Dateien, welche dem Benutzer root gehören ( -user root ),
|
||||
im Dateinamen das Wort bash vorkommt ( -iname "*bash*", Gross- und
|
||||
Kleinschreibung wird ignoriert) und kopiert diese nach
|
||||
/root ( -exec cp {} /root/ ).
|
||||
\end{verbatim}
|
||||
\end{itemize}
|
||||
\end{quote}
|
||||
\end{document}
|
||||
|
||||
|
114
m122/Lektion10/Uebung_Loes/Bash_Uebungsaufgaben-1_Loesungen.md
Normal file
@ -0,0 +1,114 @@
|
||||
::: center
|
||||
::: huge
|
||||
:::
|
||||
|
||||
::: center
|
||||
::: Large
|
||||
Bash\
|
||||
Übung 1 - Beispiellösungen
|
||||
:::
|
||||
:::
|
||||
:::
|
||||
|
||||
::: scriptsize
|
||||
::: center
|
||||
Mario Bischof
|
||||
:::
|
||||
:::
|
||||
|
||||
> 1. [root@localhost: ] cd ~
|
||||
>
|
||||
> 2. [root@localhost: ~ ] cd /var/log
|
||||
>
|
||||
> 3. [root@localhost: log ] cd /etc/udev
|
||||
>
|
||||
> 4. [root@localhost: udev ] cd ..
|
||||
>
|
||||
> 5. [root@localhost: udev ] cd network
|
||||
>
|
||||
> 6. [root@localhost: network ] cd ../../dev
|
||||
|
||||
> **a)**
|
||||
>
|
||||
> ls -z 2> /root/errorsLs.log
|
||||
>
|
||||
> **b)**
|
||||
>
|
||||
> echo "sdfonsdodsf" > datei.txt
|
||||
> cat datei.txt > datei2.txt
|
||||
> cat datei.txt > datei2.txt
|
||||
> cat datei2.txt
|
||||
> cat datei.txt >> datei2.txt
|
||||
> cat datei.txt >> datei2.txt
|
||||
> cat datei2.txt
|
||||
> # Unterschied, >> hängt Inhalt an, > überschreibt Inhalt
|
||||
> cat datei.txt >> datei.txt
|
||||
> # Erzeugt Fehler, Quell- ist Zieldatei
|
||||
>
|
||||
> **c)**
|
||||
>
|
||||
> whoami > info.txt
|
||||
>
|
||||
> **d)**
|
||||
>
|
||||
> id >> info.txt
|
||||
>
|
||||
> **e)**
|
||||
>
|
||||
> cat info-txt | wc -w
|
||||
|
||||
> **a)**
|
||||
>
|
||||
> cat file.txt | grep obelix
|
||||
> cat file.txt | grep 2
|
||||
> cat file.txt | grep e
|
||||
> cat file.txt | grep -v gamma
|
||||
> cat file.txt | grep -E "1|2|3"
|
||||
>
|
||||
> **b)**
|
||||
>
|
||||
> cat file.txt | cut -d ':' -f 1
|
||||
> cat file.txt | cut -d ':' -f 2
|
||||
> cat file.txt | cut -d ':' -f 3
|
||||
|
||||
**Aufgabe 4 - Wildcards:**
|
||||
|
||||
> 1. `mkdir ~/Docs`
|
||||
>
|
||||
> 2. `touch ~/Docs/file{1..10}`
|
||||
>
|
||||
> 3. `rm -f ~/Docs/file1*`
|
||||
>
|
||||
> 4. `rm -f ~/Docs/file[247]`
|
||||
>
|
||||
> 5. `rm -f ~/Docs/* oder rm -f ~/Docs/file*`
|
||||
>
|
||||
> ```{=html}
|
||||
> <!-- -->
|
||||
> ```
|
||||
> 1. `mkdir Files`, `cd Files`
|
||||
>
|
||||
> 2. `touch file{1..10}` (Erzeugt fileX von 1 bis 10)
|
||||
>
|
||||
> 3. `cd ..` , `cp -R Files Files2`
|
||||
>
|
||||
> 4. `cp -R Files Files2/Files3`
|
||||
>
|
||||
> 5. `mv Files Files1`
|
||||
>
|
||||
> 6. `rm -f *`
|
||||
|
||||
**Aufgabe 5 - Tilde expansions:**
|
||||
|
||||
> - Siehe Präsentationsfolien
|
||||
|
||||
**Aufgabe 6 - Für Fortgeschrittene:**
|
||||
|
||||
> - Findet alle Zeilen, welche eine PCI-Adresse beinhalten
|
||||
>
|
||||
> - Findet IP-Adressen
|
||||
>
|
||||
> - Findet alle Dateien, welche dem Benutzer root gehören ( -user root ),
|
||||
> im Dateinamen das Wort bash vorkommt ( -iname "*bash*", Gross- und
|
||||
> Kleinschreibung wird ignoriert) und kopiert diese nach
|
||||
> /root ( -exec cp {} /root/ ).
|
BIN
m122/Lektion10/Uebung_Loes/img/.DS_Store
vendored
Normal file
BIN
m122/Lektion10/Uebung_Loes/img/bfsulogo.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
m122/Lektion10/Uebung_Loes/img/bzulogo.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
m122/Lektion10/Uebung_Loes/img/ps1.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
m122/Lektion10/Uebung_Loes/img/ps2.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
m122/Lektion10/Uebung_Loes/img/ps3.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
m122/Lektion10/Uebung_Loes/img/ps4.png
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
m122/Lektion10/Uebung_Loes/img/ps5.png
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
m122/Lektion10/Uebung_Loes/img/ps6.png
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
m122/Lektion10/Uebung_Loes/img/ps7.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
m122/Lektion10/Uebung_Loes/img/ps8.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
m122/Lektion10/Uebung_Loes/img/ps9.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
m122/Lektion11/.DS_Store
vendored
Normal file
BIN
m122/Lektion11/Uebung/.DS_Store
vendored
Normal file
50
m122/Lektion11/Uebung/Bash_Uebungsaufgaben.md
Normal file
@ -0,0 +1,50 @@
|
||||
::: center
|
||||
::: huge
|
||||
:::
|
||||
|
||||
::: center
|
||||
::: Large
|
||||
Bash\
|
||||
Übungsaufgaben Skripting
|
||||
:::
|
||||
:::
|
||||
:::
|
||||
|
||||
::: scriptsize
|
||||
::: center
|
||||
Mario Bischof
|
||||
:::
|
||||
:::
|
||||
|
||||
> 1. Erzeugt Benutzer anhand einer Liste von Benutzernamen in einer
|
||||
> Textdatei (via Parameter angegebenen).\
|
||||
> Hinweis: Benutzen sie `useradd` und `cat`.
|
||||
>
|
||||
> 2. Fügt einen Benutzer anhand einer Liste von Gruppen in einer
|
||||
> Textdatei (via Parameter angegebenen) den jeweiligen Gruppen
|
||||
> hinzu.\
|
||||
> Hinweis: Benutzen sie `groupadd` und `cat`.
|
||||
>
|
||||
> 3. Findet alle Dateien, welche einem (via Parameter angegebenen)
|
||||
> Benutzer gehören und kopiert diese an den aktuellen Ort. Die
|
||||
> kopierten Dateien werden zu einem `tar.gz` Archiv zusammengefasst
|
||||
> und danach gelöscht. Die Archivdatei wird mit dem Benutzernamen
|
||||
> und dem aktuellen Datum benannt.\
|
||||
> Hinweis: Benutzen sie `find`, `tar`, `rm` und `date`.
|
||||
>
|
||||
> 4. Ermittelt die eigene IP-Adresse und macht einen PING-Sweep für das
|
||||
> Subnetz der eigenen IP. Gibt aus, welche Hosts up sind und
|
||||
> speichert die IP-Adressen der Hosts in einer Textdatei.\
|
||||
> Hinweis: Benutzen sie `ping` (oder `fping`), `ifconfig` und
|
||||
> `grep`.
|
||||
>
|
||||
> 5. Ermittelt die events der Stadt Zürich für das aktuellen Datum von
|
||||
> usgang.ch. Erweitern sie das Skript danach auf beliebige Städte
|
||||
> (unter usgang.ch gelistete) und die Angabe eines Datums (wenn kein
|
||||
> Datum angegeben wird, wird das aktuelle angewendet).\
|
||||
> Hinweis: Benutzen sie `curl`, `grep` und `cut`. Der erste, der ein
|
||||
> funktionierendes Skript für diese Aufgabe einsendet, gewinnt
|
||||
> \"Gipfeli und Schoggistengeli\".
|
||||
|
||||
Als Informationsquelle dient folgendes Onlinebuch:
|
||||
<http://openbook.rheinwerk-verlag.de/shell_programmierung/>
|
BIN
m122/Lektion11/Uebung/Bash_Uebungsaufgaben.pdf
Normal file
191
m122/Lektion11/Uebung/Bash_Uebungsaufgaben.tex
Normal file
@ -0,0 +1,191 @@
|
||||
\documentclass[a4paper,11pt]{report}
|
||||
%\usepackage{isolatin1}
|
||||
%\usepackage{german}
|
||||
\usepackage{float}
|
||||
\usepackage{listings}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{lastpage}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{soul}
|
||||
|
||||
\usepackage{lmodern} % Latin Modern
|
||||
|
||||
\usepackage[ngerman]{babel, translator}
|
||||
\usepackage[utf8]{inputenc}
|
||||
|
||||
|
||||
%\usepackage[ngerman]{babel, translator}
|
||||
|
||||
|
||||
%\usepackage[utf8x]{inputenc}
|
||||
\usepackage[left=2.5cm,top=2cm,right=2cm,bottom=4cm]{geometry}
|
||||
|
||||
%Code listings
|
||||
\usepackage{listings}
|
||||
\usepackage{etoolbox}
|
||||
\patchcmd{\chapter}{\thispagestyle{plain}}{\thispagestyle{fancy}}{}{}
|
||||
|
||||
|
||||
\usepackage[]{hyperref}
|
||||
\hypersetup{
|
||||
linkcolor=blue,
|
||||
pagecolor= blue,
|
||||
urlcolor= blue,
|
||||
colorlinks=true,
|
||||
pdfborder=0 0 0
|
||||
}
|
||||
\usepackage[
|
||||
nonumberlist, %keine Seitenzahlen anzeigen
|
||||
acronym, %ein Abk�rzungsverzeichnis erstellen
|
||||
toc, %Eintr�ge im Inhaltsverzeichnis
|
||||
section] %im Inhaltsverzeichnis auf section-Ebene erscheinen
|
||||
{glossaries}
|
||||
|
||||
|
||||
\usepackage{hyperref}
|
||||
|
||||
%Ein eigenes Symbolverzeichnis erstellen
|
||||
\newglossary[slg]{symbolslist}{syi}{syg}{Symbolverzeichnis}
|
||||
|
||||
%Den Punkt am Ende jeder Beschreibung deaktivieren
|
||||
\renewcommand*{\glspostdescription}{}
|
||||
|
||||
|
||||
|
||||
%Glossar-Befehle anschalten
|
||||
\makeglossaries
|
||||
|
||||
%Diese Befehle sortieren die Eintr�ge in den
|
||||
%einzelnen Listen:
|
||||
%makeindex -s datei.ist -t datei.alg -o datei.acr datei.acn
|
||||
%makeindex -s datei.ist -t datei.glg -o datei.gls datei.glo
|
||||
%makeindex -s datei.ist -t datei.slg -o datei.syi datei.syg
|
||||
|
||||
|
||||
|
||||
% define acronyms here
|
||||
\newacronym{PDF}{PDF}{Portable Document Format}
|
||||
\newacronym{APDU}{APDU}{Application Protocol Data Unit}
|
||||
\newacronym{AGPL}{AGPL}{Affero General Public License}
|
||||
\newacronym{GPL}{GPL}{General Public License}
|
||||
\newacronym{LGPL}{LGPL}{Lesser General Public License}
|
||||
|
||||
|
||||
\newacronym{DCT}{DCT}{Discrete Cosine Transform}
|
||||
\newacronym{TTA}{TTA}{Trusted Timestamp Authority}
|
||||
\newacronym{OCSP}{OCSP}{Online Certificate Status Protocol}
|
||||
\newacronym{PKI}{PKI}{Public Key Infrastructure}
|
||||
|
||||
|
||||
|
||||
%\newacronym{BDD}{BDD}{Behaviour Driven Development\protect\glsadd{glos:BDD}}
|
||||
|
||||
\newglossaryentry{Application Protocol Data Unit}
|
||||
{
|
||||
name={Application Protocol Data Unit},
|
||||
description={blablabla}
|
||||
}
|
||||
|
||||
\newglossaryentry{Copyleft}
|
||||
{
|
||||
name={Copyleft},
|
||||
description={The copyleft ist the obligation required by the GLP (or AGPL) license to offer the source code of a work (and every derivative of it) to the public (open source). Copy{\bf{left}} can also be considered as the opposite of copy{\bf{right}}. }
|
||||
}
|
||||
|
||||
|
||||
%Befehle f�r Glossar
|
||||
|
||||
\usepackage{helvet}
|
||||
\renewcommand{\familydefault}{\sfdefault}
|
||||
|
||||
\renewcommand\contentsname{Inhaltsverzeichnis}
|
||||
|
||||
|
||||
%Einstellungen f??r code listings
|
||||
\lstset{inputencoding=utf8, language=Java,tabsize=2, basicstyle=\small,breaklines=true,showstringspaces=false}
|
||||
\pagestyle{fancy}
|
||||
\setlength{\headheight}{38pt}
|
||||
\setlength{\headwidth}{470pt}
|
||||
\renewcommand{\headrule}{\hskip -\leftskip{\bf \quad \quad}\vbox to 5pt{\hbox to 455pt{\hrulefill}}}
|
||||
\renewcommand{\footrule}{\hskip-\leftskip{\bf \quad \quad}{\hbox to 450 pt{\hrulefill}\newline}}
|
||||
\fancyhf{}
|
||||
\fancyheadoffset[L]{1cm}
|
||||
\fancyfootoffset[L]{1cm}
|
||||
%Kopfzeile links bzw. innen
|
||||
\fancyhead[L]{\includegraphics[height=0.6in]{img/bfsulogo.jpg}}
|
||||
%Kopfzeile mittig
|
||||
\fancyhead[C]{}
|
||||
%Kopfzeile rechts bzw. au??????????�?en
|
||||
\fancyhead[R]{\hspace{10pt} Modul 122\\Abläufe mit Skripts/Makros automatisieren\\ \rightmark }
|
||||
\fancyheadoffset[L]{1cm}
|
||||
\fancyfootoffset[L]{1cm}
|
||||
%Linie oben
|
||||
\renewcommand{\headrulewidth}{0.7pt}
|
||||
%Fu??????????�?zeile mittig
|
||||
\cfoot{\vspace*{6mm}page:\ \thepage\ of \pageref{LastPage}}
|
||||
\fancyfoot[R]{}
|
||||
% footnote in footer
|
||||
\newcommand{\fancyfootnotetext}[2]{%
|
||||
\fancypagestyle{dingens}{%
|
||||
\fancyfoot[LO,RE]{\parbox{12cm}{\footnotemark[#1]\footnotesize #2}}%
|
||||
}%
|
||||
\thispagestyle{dingens}%
|
||||
}
|
||||
%Linie unten
|
||||
\renewcommand{\footrulewidth}{0.5pt}
|
||||
|
||||
\vspace*{15mm}
|
||||
\textwidth 450pt
|
||||
|
||||
|
||||
|
||||
\begin{document}
|
||||
|
||||
\setcounter{tocdepth}{5}
|
||||
|
||||
|
||||
|
||||
%\thispagestyle{empty}
|
||||
|
||||
\begin{center}
|
||||
|
||||
\vspace{48pt}
|
||||
|
||||
|
||||
\vspace{15pt}
|
||||
\begin{huge}
|
||||
\end{huge}
|
||||
\vspace{10pt}
|
||||
\begin{center}
|
||||
\begin{Large}
|
||||
Bash\\ \vspace{20pt}
|
||||
Übungsaufgaben Skripting
|
||||
\end{Large}
|
||||
\end{center}
|
||||
|
||||
\vspace{10pt}
|
||||
|
||||
\end{center}
|
||||
|
||||
\begin{scriptsize}
|
||||
\begin{center}
|
||||
\noindent Mario Bischof
|
||||
\end{center}
|
||||
\end{scriptsize}
|
||||
\newpage
|
||||
\noindent{\bf{Aufgaben}}
|
||||
\begin{quote}
|
||||
\begin{enumerate}
|
||||
\item Erzeugt Benutzer anhand einer Liste von Benutzernamen in einer Textdatei (via Parameter angegebenen). \\ Hinweis: Benutzen sie \verb|useradd| und \verb|cat|.
|
||||
\item Fügt einen Benutzer anhand einer Liste von Gruppen in einer Textdatei (via Parameter angegebenen) den jeweiligen Gruppen hinzu. \\ Hinweis: Benutzen sie \verb|groupadd| und \verb|cat|.
|
||||
|
||||
\item Findet alle Dateien, welche einem (via Parameter angegebenen) Benutzer gehören und kopiert diese an den aktuellen Ort. Die kopierten Dateien werden zu einem \verb|tar.gz| Archiv zusammengefasst und danach gelöscht. Die Archivdatei wird mit dem Benutzernamen und dem aktuellen Datum benannt. \\ Hinweis: Benutzen sie \verb|find|, \verb|tar|, \verb|rm| und \verb|date|.
|
||||
\item Ermittelt die eigene IP-Adresse und macht einen PING-Sweep für das Subnetz der eigenen IP. Gibt aus, welche Hosts up sind und speichert die IP-Adressen der Hosts in einer Textdatei. \\ Hinweis: Benutzen sie \verb|ping| (oder \verb|fping|), \verb|ifconfig| und \verb|grep|.
|
||||
\item Ermittelt die events der Stadt Zürich für das aktuellen Datum von usgang.ch. Erweitern sie das Skript danach auf beliebige Städte (unter usgang.ch gelistete) und die Angabe eines Datums (wenn kein Datum angegeben wird, wird das aktuelle angewendet). \\ Hinweis: Benutzen sie \verb|curl|, \verb|grep| und \verb|cut|. Der erste, der ein funktionierendes Skript für diese Aufgabe einsendet, gewinnt "Gipfeli und Schoggistengeli".
|
||||
\end{enumerate}
|
||||
\end{quote}
|
||||
Als Informationsquelle dient folgendes Onlinebuch: \url{http://openbook.rheinwerk-verlag.de/shell_programmierung/}
|
||||
|
||||
\end{document}
|
||||
|
||||
|
BIN
m122/Lektion11/Uebung/img/.DS_Store
vendored
Normal file
BIN
m122/Lektion11/Uebung/img/bfsulogo.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
m122/Lektion11/Uebung/img/bzulogo.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
m122/Lektion12/.DS_Store
vendored
Normal file
BIN
m122/Lektion12/Uebung/.DS_Store
vendored
Normal file
52
m122/Lektion12/Uebung/Bash_Uebungsaufgaben2.md
Normal file
@ -0,0 +1,52 @@
|
||||
::: center
|
||||
::: huge
|
||||
:::
|
||||
|
||||
::: center
|
||||
::: Large
|
||||
Bash\
|
||||
Übungsaufgaben 2 Skripting
|
||||
:::
|
||||
:::
|
||||
:::
|
||||
|
||||
::: scriptsize
|
||||
::: center
|
||||
Mario Bischof
|
||||
:::
|
||||
:::
|
||||
|
||||
> 1. Erstellen sie einen Ordner `/root/trash` und erzeugen sie einige
|
||||
> Dateien darin. Erstellen sie ein Skript, welches alle 5 Minuten
|
||||
> die Dateien innerhalb von diesem Ordner löscht (für Infos siehe
|
||||
> auch Link 3 im Anhang). Überprüfen sie, ob ihr Skript korrekt
|
||||
> eingerichtet ist, indem sie nachsehe, ob die Files nach 5 Minuten
|
||||
> gelöscht wurden.
|
||||
>
|
||||
> 2. Erstellen sie ein Skript, mit welchem eine IP-Adressrange *bannen*
|
||||
> oder *unbannen* können. Es gibt unterschiedliche tools, womit sie
|
||||
> diese Funktionalität umsetzen können. Verwenden sie das Internet
|
||||
> zur Informationssuche.
|
||||
>
|
||||
> 3. Erstellen sie folgende Benutzer und Gruppen. Benutzen sie zur
|
||||
> Automatisierung die Skripte aus Bash Uebungsaufgaben 1. Versuchen
|
||||
> sie den Prozess der Erstellung möglichst stark zu automatisieren:
|
||||
>
|
||||
> ::: center
|
||||
> ![image](img/u1.png){height="3.8in"}
|
||||
> :::
|
||||
>
|
||||
> 4. Erstellen sie folgende Ordnerstruktur und setzen sie die
|
||||
> abgebildeten Berechtigungen (Auf den Berechtigungen ist auch das
|
||||
> SGID-Bit (`s`) und sticky-Bit (`T`) abgebildet. Setzen sie auch
|
||||
> dieses. Sie finden eine Erklärung und Anleitung im zweiten Link
|
||||
> zuunterst in diesem Übungsblatt.) :
|
||||
>
|
||||
> ::: center
|
||||
> ![image](img/u2.png){height="1.8in"}
|
||||
> :::
|
||||
|
||||
<http://linux-infopage.de/show.php?page=berichte-berechtigungen>\
|
||||
<http://www.zettel-it.de/docs/SUID-SGID-und-Sticky-Bit.pdf>\
|
||||
<https://www.howtoforge.de/anleitung/eine-kurze-einfuhrung-in-cron-jobs/>\
|
||||
<http://openbook.rheinwerk-verlag.de/shell_programmierung/>
|
BIN
m122/Lektion12/Uebung/Bash_Uebungsaufgaben2.pdf
Normal file
200
m122/Lektion12/Uebung/Bash_Uebungsaufgaben2.tex
Normal file
@ -0,0 +1,200 @@
|
||||
\documentclass[a4paper,11pt]{report}
|
||||
%\usepackage{isolatin1}
|
||||
%\usepackage{german}
|
||||
\usepackage{float}
|
||||
\usepackage{listings}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{lastpage}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{soul}
|
||||
|
||||
\usepackage{lmodern} % Latin Modern
|
||||
|
||||
\usepackage[ngerman]{babel, translator}
|
||||
\usepackage[utf8]{inputenc}
|
||||
|
||||
|
||||
%\usepackage[ngerman]{babel, translator}
|
||||
|
||||
|
||||
%\usepackage[utf8x]{inputenc}
|
||||
\usepackage[left=2.5cm,top=2cm,right=2cm,bottom=4cm]{geometry}
|
||||
|
||||
%Code listings
|
||||
\usepackage{listings}
|
||||
\usepackage{etoolbox}
|
||||
\patchcmd{\chapter}{\thispagestyle{plain}}{\thispagestyle{fancy}}{}{}
|
||||
|
||||
|
||||
\usepackage[]{hyperref}
|
||||
\hypersetup{
|
||||
linkcolor=blue,
|
||||
pagecolor= blue,
|
||||
urlcolor= blue,
|
||||
colorlinks=true,
|
||||
pdfborder=0 0 0
|
||||
}
|
||||
\usepackage[
|
||||
nonumberlist, %keine Seitenzahlen anzeigen
|
||||
acronym, %ein Abk�rzungsverzeichnis erstellen
|
||||
toc, %Eintr�ge im Inhaltsverzeichnis
|
||||
section] %im Inhaltsverzeichnis auf section-Ebene erscheinen
|
||||
{glossaries}
|
||||
|
||||
|
||||
\usepackage{hyperref}
|
||||
|
||||
%Ein eigenes Symbolverzeichnis erstellen
|
||||
\newglossary[slg]{symbolslist}{syi}{syg}{Symbolverzeichnis}
|
||||
|
||||
%Den Punkt am Ende jeder Beschreibung deaktivieren
|
||||
\renewcommand*{\glspostdescription}{}
|
||||
|
||||
|
||||
|
||||
%Glossar-Befehle anschalten
|
||||
\makeglossaries
|
||||
|
||||
%Diese Befehle sortieren die Eintr�ge in den
|
||||
%einzelnen Listen:
|
||||
%makeindex -s datei.ist -t datei.alg -o datei.acr datei.acn
|
||||
%makeindex -s datei.ist -t datei.glg -o datei.gls datei.glo
|
||||
%makeindex -s datei.ist -t datei.slg -o datei.syi datei.syg
|
||||
|
||||
|
||||
|
||||
% define acronyms here
|
||||
\newacronym{PDF}{PDF}{Portable Document Format}
|
||||
\newacronym{APDU}{APDU}{Application Protocol Data Unit}
|
||||
\newacronym{AGPL}{AGPL}{Affero General Public License}
|
||||
\newacronym{GPL}{GPL}{General Public License}
|
||||
\newacronym{LGPL}{LGPL}{Lesser General Public License}
|
||||
|
||||
|
||||
\newacronym{DCT}{DCT}{Discrete Cosine Transform}
|
||||
\newacronym{TTA}{TTA}{Trusted Timestamp Authority}
|
||||
\newacronym{OCSP}{OCSP}{Online Certificate Status Protocol}
|
||||
\newacronym{PKI}{PKI}{Public Key Infrastructure}
|
||||
|
||||
|
||||
|
||||
%\newacronym{BDD}{BDD}{Behaviour Driven Development\protect\glsadd{glos:BDD}}
|
||||
|
||||
\newglossaryentry{Application Protocol Data Unit}
|
||||
{
|
||||
name={Application Protocol Data Unit},
|
||||
description={blablabla}
|
||||
}
|
||||
|
||||
\newglossaryentry{Copyleft}
|
||||
{
|
||||
name={Copyleft},
|
||||
description={The copyleft ist the obligation required by the GLP (or AGPL) license to offer the source code of a work (and every derivative of it) to the public (open source). Copy{\bf{left}} can also be considered as the opposite of copy{\bf{right}}. }
|
||||
}
|
||||
|
||||
|
||||
%Befehle f�r Glossar
|
||||
|
||||
\usepackage{helvet}
|
||||
\renewcommand{\familydefault}{\sfdefault}
|
||||
|
||||
\renewcommand\contentsname{Inhaltsverzeichnis}
|
||||
|
||||
|
||||
%Einstellungen f??r code listings
|
||||
\lstset{inputencoding=utf8, language=Java,tabsize=2, basicstyle=\small,breaklines=true,showstringspaces=false}
|
||||
\pagestyle{fancy}
|
||||
\setlength{\headheight}{38pt}
|
||||
\setlength{\headwidth}{470pt}
|
||||
\renewcommand{\headrule}{\hskip -\leftskip{\bf \quad \quad}\vbox to 5pt{\hbox to 455pt{\hrulefill}}}
|
||||
\renewcommand{\footrule}{\hskip-\leftskip{\bf \quad \quad}{\hbox to 450 pt{\hrulefill}\newline}}
|
||||
\fancyhf{}
|
||||
\fancyheadoffset[L]{1cm}
|
||||
\fancyfootoffset[L]{1cm}
|
||||
%Kopfzeile links bzw. innen
|
||||
\fancyhead[L]{\includegraphics[height=0.6in]{img/bfsulogo.jpg}}
|
||||
%Kopfzeile mittig
|
||||
\fancyhead[C]{}
|
||||
%Kopfzeile rechts bzw. au??????????�?en
|
||||
\fancyhead[R]{\hspace{10pt} Modul 122\\Abläufe mit Skripts/Makros automatisieren\\ \rightmark }
|
||||
\fancyheadoffset[L]{1cm}
|
||||
\fancyfootoffset[L]{1cm}
|
||||
%Linie oben
|
||||
\renewcommand{\headrulewidth}{0.7pt}
|
||||
%Fu??????????�?zeile mittig
|
||||
\cfoot{\vspace*{6mm}page:\ \thepage\ of \pageref{LastPage}}
|
||||
\fancyfoot[R]{}
|
||||
% footnote in footer
|
||||
\newcommand{\fancyfootnotetext}[2]{%
|
||||
\fancypagestyle{dingens}{%
|
||||
\fancyfoot[LO,RE]{\parbox{12cm}{\footnotemark[#1]\footnotesize #2}}%
|
||||
}%
|
||||
\thispagestyle{dingens}%
|
||||
}
|
||||
%Linie unten
|
||||
\renewcommand{\footrulewidth}{0.5pt}
|
||||
|
||||
\vspace*{15mm}
|
||||
\textwidth 450pt
|
||||
|
||||
|
||||
|
||||
\begin{document}
|
||||
|
||||
\setcounter{tocdepth}{5}
|
||||
|
||||
|
||||
|
||||
%\thispagestyle{empty}
|
||||
|
||||
\begin{center}
|
||||
|
||||
\vspace{48pt}
|
||||
|
||||
|
||||
\vspace{15pt}
|
||||
\begin{huge}
|
||||
\end{huge}
|
||||
\vspace{10pt}
|
||||
\begin{center}
|
||||
\begin{Large}
|
||||
Bash\\ \vspace{20pt}
|
||||
Übungsaufgaben 2 Skripting
|
||||
\end{Large}
|
||||
\end{center}
|
||||
|
||||
\vspace{10pt}
|
||||
|
||||
\end{center}
|
||||
|
||||
\begin{scriptsize}
|
||||
\begin{center}
|
||||
\noindent Mario Bischof
|
||||
\end{center}
|
||||
\end{scriptsize}
|
||||
\newpage
|
||||
\noindent{\bf{Aufgaben}}
|
||||
\begin{quote}
|
||||
\begin{enumerate}
|
||||
\item Erstellen sie einen Ordner \verb|/root/trash| und erzeugen sie einige Dateien darin. Erstellen sie ein Skript, welches alle 5 Minuten die Dateien innerhalb von diesem Ordner löscht (für Infos siehe auch Link 3 im Anhang). Überprüfen sie, ob ihr Skript korrekt eingerichtet ist, indem sie nachsehe, ob die Files nach 5 Minuten gelöscht wurden.
|
||||
\item Erstellen sie ein Skript, mit welchem eine IP-Adressrange \emph{bannen} oder \emph{unbannen} können. Es gibt unterschiedliche tools, womit sie diese Funktionalität umsetzen können. Verwenden sie das Internet zur Informationssuche.
|
||||
\item Erstellen sie folgende Benutzer und Gruppen. Benutzen sie zur Automatisierung die Skripte aus Bash Uebungsaufgaben 1. Versuchen sie den Prozess der Erstellung möglichst stark zu automatisieren:
|
||||
\begin{center}
|
||||
\includegraphics[height=3.8in]{img/u1.png}
|
||||
\end{center}
|
||||
\item Erstellen sie folgende Ordnerstruktur und setzen sie die abgebildeten Berechtigungen (Auf den Berechtigungen ist auch das SGID-Bit (\verb|s|) und sticky-Bit (\verb|T|) abgebildet. Setzen sie auch dieses. Sie finden eine Erklärung und Anleitung im zweiten Link zuunterst in diesem Übungsblatt.) :
|
||||
\begin{center}
|
||||
\includegraphics[height=1.8in]{img/u2.png}
|
||||
\end{center}
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
\end{quote}
|
||||
\url{http://linux-infopage.de/show.php?page=berichte-berechtigungen}\\
|
||||
\url{http://www.zettel-it.de/docs/SUID-SGID-und-Sticky-Bit.pdf}\\
|
||||
\url{https://www.howtoforge.de/anleitung/eine-kurze-einfuhrung-in-cron-jobs/}\\
|
||||
\url{http://openbook.rheinwerk-verlag.de/shell_programmierung/}
|
||||
|
||||
\end{document}
|
||||
|
||||
|
BIN
m122/Lektion12/Uebung/img/.DS_Store
vendored
Normal file
BIN
m122/Lektion12/Uebung/img/bfsulogo.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
m122/Lektion12/Uebung/img/bzulogo.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
m122/Lektion12/Uebung/img/u1.png
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
m122/Lektion12/Uebung/img/u2.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
m122/Lektion13/.DS_Store
vendored
Normal file
BIN
m122/Lektion13/Uebung/.DS_Store
vendored
Normal file
115
m122/Lektion13/Uebung/Bash_PruefVorber.md
Normal file
@ -0,0 +1,115 @@
|
||||
::: center
|
||||
::: huge
|
||||
:::
|
||||
|
||||
::: center
|
||||
::: Large
|
||||
Linux Bash\
|
||||
Übung Prüfungsvorbereitung
|
||||
:::
|
||||
:::
|
||||
:::
|
||||
|
||||
::: scriptsize
|
||||
::: center
|
||||
Mario Bischof
|
||||
:::
|
||||
:::
|
||||
|
||||
**Aufgaben:**
|
||||
|
||||
> **a)** - Was macht folgende Zeile?
|
||||
>
|
||||
> ifconfig | grep "Ether" -c
|
||||
>
|
||||
> **b)** - Was macht folgende Zeile?
|
||||
>
|
||||
> tar -vczf backup.tar.gz /root/
|
||||
>
|
||||
> **c)** - Füllen sie eine Datei `namen.txt` mit folgendem Inhalt
|
||||
>
|
||||
> Otto
|
||||
> Peter
|
||||
> Martin
|
||||
> Christian
|
||||
> Andrea
|
||||
> Otto
|
||||
> Martin
|
||||
> Peter
|
||||
> Bob
|
||||
>
|
||||
> Was macht folgender Befehl?
|
||||
>
|
||||
> cat namen.txt | sort -u
|
||||
>
|
||||
> **d)** - Formulieren sie einen Befehl, welcher aus der Datei
|
||||
> `/etc/passwd` alle Heimverzeichnisse ausschneidet und in einer Datei
|
||||
> `homes.txt` speichert\
|
||||
> \
|
||||
> **e)** - Formulieren sie eine for-schleife, welche durch die Zahlen 1
|
||||
> bis 10 läuft und das Produkt der Zahlen mit sich selbst ausgibt\
|
||||
> \
|
||||
> **f)** - Wie oft laufen folgende cronjobs?
|
||||
>
|
||||
> */10 * * * * <befehl>
|
||||
> 5 8 * * 0 <befehl>
|
||||
> 0 10 1 * * <befehl>
|
||||
>
|
||||
> **g)** - Was macht folgendes Skript?
|
||||
>
|
||||
> #!/bin/bash
|
||||
> for i in $( ifconfig | grep "inet Adr" | grep -v "127.0.0.1" |
|
||||
> cut -d ":" -f 2 | cut -d "." -f 1-3 ); do
|
||||
> for k in $(seq 1 255); do
|
||||
> fping -c 1 -t250 $i.$k 2>&1 | grep " 0% " | cut -d " " -f 1 >> ips.txt
|
||||
> done
|
||||
> done
|
||||
>
|
||||
> **h)** - Was macht folgender Befehl?
|
||||
>
|
||||
> fping -g -c 1 -t250 172.16.6.0/24 2>&1 | grep " 0% " | cut -d " " -f 1 > ips.txt
|
||||
>
|
||||
> **i)** - Was macht folgender Befehl?
|
||||
>
|
||||
> find / -user otto -iname "*bash*" -exec cp {} /data/otto/ \;
|
||||
>
|
||||
> **j)** - Was machen folgende Befehle?
|
||||
>
|
||||
> for ip in $(seq 200 254);do echo 192.168.13.$ip; done > ips.txt
|
||||
> for ip in $(cat ips.txt);do dig -x $ip | grep $ip >> dns.txt; done
|
||||
|
||||
**Lösungen:**
|
||||
|
||||
> **a)** - Zählt wie oft der Begriff *ether* in der Ausgabe von grep
|
||||
> vorkommt.\
|
||||
> \
|
||||
> **b)** - Komprimiert und archiviert den Inhalt des Ordners `/root/` in
|
||||
> der Datei `backup.tar.gz`\
|
||||
> \
|
||||
> **c)** - Gibt die Begriffe in alphabetischer Reihenfolge ohne
|
||||
> Duplikate aus\
|
||||
> \
|
||||
> **d)** -
|
||||
>
|
||||
> cat /etc/passwd | cut -d ':' -f 6 > homes.txt
|
||||
>
|
||||
> **e)** -
|
||||
>
|
||||
> for z in {1..10};do echo $((z*z)); done
|
||||
>
|
||||
> **f)**
|
||||
>
|
||||
> - Alle 10 Minuten
|
||||
> - Sonntags um 8:05 Uhr
|
||||
> - An jedem 1.Tag im Monat um 10:00 Uhr
|
||||
>
|
||||
> **g)** - Beispiellösung zur Ping-sweep Aufgabe\
|
||||
> \
|
||||
> **h)** - Vereinfachung des Ping-sweeps mit `-g`\
|
||||
> \
|
||||
> **i)** - Findet alle Dateien von user `otto` mit dem Begriff bash im
|
||||
> Namen und kopiert diese nach `/data/otto`.\
|
||||
> \
|
||||
> **j)** - 1. Zeile: generiert IPs (24er Netz 192.168.13.x) und
|
||||
> speichert diese in `ips.txt`, 2.Zeile macht einen reverse DNS-lookup
|
||||
> zu jeder IP in `ips.txt`
|
BIN
m122/Lektion13/Uebung/Bash_PruefVorber.pdf
Normal file
264
m122/Lektion13/Uebung/Bash_PruefVorber.tex
Normal file
@ -0,0 +1,264 @@
|
||||
\documentclass[a4paper,11pt]{report}
|
||||
%\usepackage{isolatin1}
|
||||
%\usepackage{german}
|
||||
\usepackage{float}
|
||||
\usepackage{listings}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{lastpage}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{soul}
|
||||
|
||||
\usepackage{lmodern} % Latin Modern
|
||||
|
||||
\usepackage[ngerman]{babel, translator}
|
||||
\usepackage[utf8]{inputenc}
|
||||
|
||||
|
||||
%\usepackage[ngerman]{babel, translator}
|
||||
|
||||
|
||||
%\usepackage[utf8x]{inputenc}
|
||||
\usepackage[left=2.5cm,top=2cm,right=2cm,bottom=4cm]{geometry}
|
||||
|
||||
%Code listings
|
||||
\usepackage{listings}
|
||||
\usepackage{etoolbox}
|
||||
\patchcmd{\chapter}{\thispagestyle{plain}}{\thispagestyle{fancy}}{}{}
|
||||
|
||||
|
||||
\usepackage[]{hyperref}
|
||||
\hypersetup{
|
||||
linkcolor=blue,
|
||||
pagecolor= blue,
|
||||
urlcolor= blue,
|
||||
colorlinks=true,
|
||||
pdfborder=0 0 0
|
||||
}
|
||||
\usepackage[
|
||||
nonumberlist, %keine Seitenzahlen anzeigen
|
||||
acronym, %ein Abk�rzungsverzeichnis erstellen
|
||||
toc, %Eintr�ge im Inhaltsverzeichnis
|
||||
section] %im Inhaltsverzeichnis auf section-Ebene erscheinen
|
||||
{glossaries}
|
||||
|
||||
|
||||
\usepackage{hyperref}
|
||||
|
||||
%Ein eigenes Symbolverzeichnis erstellen
|
||||
\newglossary[slg]{symbolslist}{syi}{syg}{Symbolverzeichnis}
|
||||
|
||||
%Den Punkt am Ende jeder Beschreibung deaktivieren
|
||||
\renewcommand*{\glspostdescription}{}
|
||||
|
||||
|
||||
|
||||
%Glossar-Befehle anschalten
|
||||
\makeglossaries
|
||||
|
||||
%Diese Befehle sortieren die Eintr�ge in den
|
||||
%einzelnen Listen:
|
||||
%makeindex -s datei.ist -t datei.alg -o datei.acr datei.acn
|
||||
%makeindex -s datei.ist -t datei.glg -o datei.gls datei.glo
|
||||
%makeindex -s datei.ist -t datei.slg -o datei.syi datei.syg
|
||||
|
||||
|
||||
|
||||
% define acronyms here
|
||||
\newacronym{PDF}{PDF}{Portable Document Format}
|
||||
\newacronym{APDU}{APDU}{Application Protocol Data Unit}
|
||||
\newacronym{AGPL}{AGPL}{Affero General Public License}
|
||||
\newacronym{GPL}{GPL}{General Public License}
|
||||
\newacronym{LGPL}{LGPL}{Lesser General Public License}
|
||||
|
||||
|
||||
\newacronym{DCT}{DCT}{Discrete Cosine Transform}
|
||||
\newacronym{TTA}{TTA}{Trusted Timestamp Authority}
|
||||
\newacronym{OCSP}{OCSP}{Online Certificate Status Protocol}
|
||||
\newacronym{PKI}{PKI}{Public Key Infrastructure}
|
||||
|
||||
|
||||
|
||||
%\newacronym{BDD}{BDD}{Behaviour Driven Development\protect\glsadd{glos:BDD}}
|
||||
|
||||
\newglossaryentry{Application Protocol Data Unit}
|
||||
{
|
||||
name={Application Protocol Data Unit},
|
||||
description={blablabla}
|
||||
}
|
||||
|
||||
\newglossaryentry{Copyleft}
|
||||
{
|
||||
name={Copyleft},
|
||||
description={The copyleft ist the obligation required by the GLP (or AGPL) license to offer the source code of a work (and every derivative of it) to the public (open source). Copy{\bf{left}} can also be considered as the opposite of copy{\bf{right}}. }
|
||||
}
|
||||
|
||||
|
||||
%Befehle f�r Glossar
|
||||
|
||||
\usepackage{helvet}
|
||||
\renewcommand{\familydefault}{\sfdefault}
|
||||
|
||||
\renewcommand\contentsname{Inhaltsverzeichnis}
|
||||
|
||||
|
||||
%Einstellungen f??r code listings
|
||||
\lstset{inputencoding=utf8, language=Java,tabsize=2, basicstyle=\small,breaklines=true,showstringspaces=false}
|
||||
\pagestyle{fancy}
|
||||
\setlength{\headheight}{38pt}
|
||||
\setlength{\headwidth}{470pt}
|
||||
\renewcommand{\headrule}{\hskip -\leftskip{\bf \quad \quad}\vbox to 5pt{\hbox to 455pt{\hrulefill}}}
|
||||
\renewcommand{\footrule}{\hskip-\leftskip{\bf \quad \quad}{\hbox to 450 pt{\hrulefill}\newline}}
|
||||
\fancyhf{}
|
||||
\fancyheadoffset[L]{1cm}
|
||||
\fancyfootoffset[L]{1cm}
|
||||
%Kopfzeile links bzw. innen
|
||||
\fancyhead[L]{\includegraphics[height=0.6in]{img/bfsulogo.jpg}}
|
||||
%Kopfzeile mittig
|
||||
\fancyhead[C]{}
|
||||
%Kopfzeile rechts bzw. au??????????�?en
|
||||
\fancyhead[R]{\hspace{10pt} Modul 122\\Abläufe mit Skripts/Makros automatisieren\\ \rightmark }
|
||||
\fancyheadoffset[L]{1cm}
|
||||
\fancyfootoffset[L]{1cm}
|
||||
%Linie oben
|
||||
\renewcommand{\headrulewidth}{0.7pt}
|
||||
%Fu??????????�?zeile mittig
|
||||
\cfoot{\vspace*{6mm}page:\ \thepage\ of \pageref{LastPage}}
|
||||
\fancyfoot[R]{}
|
||||
% footnote in footer
|
||||
\newcommand{\fancyfootnotetext}[2]{%
|
||||
\fancypagestyle{dingens}{%
|
||||
\fancyfoot[LO,RE]{\parbox{12cm}{\footnotemark[#1]\footnotesize #2}}%
|
||||
}%
|
||||
\thispagestyle{dingens}%
|
||||
}
|
||||
%Linie unten
|
||||
\renewcommand{\footrulewidth}{0.5pt}
|
||||
|
||||
\vspace*{15mm}
|
||||
\textwidth 450pt
|
||||
|
||||
|
||||
|
||||
\begin{document}
|
||||
|
||||
\setcounter{tocdepth}{5}
|
||||
|
||||
|
||||
|
||||
%\thispagestyle{empty}
|
||||
|
||||
\begin{center}
|
||||
|
||||
\vspace{48pt}
|
||||
|
||||
|
||||
\vspace{15pt}
|
||||
\begin{huge}
|
||||
\end{huge}
|
||||
\vspace{10pt}
|
||||
\begin{center}
|
||||
\begin{Large}
|
||||
Linux Bash \\ \vspace{20pt}
|
||||
Übung Prüfungsvorbereitung
|
||||
\end{Large}
|
||||
\end{center}
|
||||
|
||||
\vspace{10pt}
|
||||
|
||||
\end{center}
|
||||
|
||||
\begin{scriptsize}
|
||||
\begin{center}
|
||||
\noindent Mario Bischof
|
||||
\end{center}
|
||||
\end{scriptsize}
|
||||
\newpage
|
||||
{\bf{Aufgaben:}}
|
||||
\begin{quote}
|
||||
{\bf{a)}} - Was macht folgende Zeile?
|
||||
\begin{verbatim}
|
||||
ifconfig | grep "Ether" -c
|
||||
\end{verbatim}
|
||||
{\bf{b)}} - Was macht folgende Zeile?
|
||||
\begin{verbatim}
|
||||
tar -vczf backup.tar.gz /root/
|
||||
\end{verbatim}
|
||||
{\bf{c)}} - Füllen sie eine Datei \verb|namen.txt| mit folgendem Inhalt
|
||||
\begin{verbatim}
|
||||
Otto
|
||||
Peter
|
||||
Martin
|
||||
Christian
|
||||
Andrea
|
||||
Otto
|
||||
Martin
|
||||
Peter
|
||||
Bob
|
||||
\end{verbatim}
|
||||
Was macht folgender Befehl?
|
||||
\begin{verbatim}
|
||||
cat namen.txt | sort -u
|
||||
\end{verbatim}
|
||||
{\bf{d)}} - Formulieren sie einen Befehl, welcher aus der Datei \verb|/etc/passwd| alle Heimverzeichnisse ausschneidet und in einer Datei \verb|homes.txt| speichert\\\\
|
||||
{\bf{e)}} - Formulieren sie eine for-schleife, welche durch die Zahlen 1 bis 10 läuft und das Produkt der Zahlen mit sich selbst ausgibt\\\\
|
||||
{\bf{f)}} - Wie oft laufen folgende cronjobs?
|
||||
\begin{verbatim}
|
||||
*/10 * * * * <befehl>
|
||||
5 8 * * 0 <befehl>
|
||||
0 10 1 * * <befehl>
|
||||
\end{verbatim}
|
||||
{\bf{g)}} - Was macht folgendes Skript?
|
||||
\begin{verbatim}
|
||||
#!/bin/bash
|
||||
for i in $( ifconfig | grep "inet Adr" | grep -v "127.0.0.1" |
|
||||
cut -d ":" -f 2 | cut -d "." -f 1-3 ); do
|
||||
for k in $(seq 1 255); do
|
||||
fping -c 1 -t250 $i.$k 2>&1 | grep " 0% " | cut -d " " -f 1 >> ips.txt
|
||||
done
|
||||
done
|
||||
\end{verbatim}
|
||||
{\bf{h)}} - Was macht folgender Befehl?
|
||||
\begin{verbatim}
|
||||
fping -g -c 1 -t250 172.16.6.0/24 2>&1 | grep " 0% " | cut -d " " -f 1 > ips.txt
|
||||
\end{verbatim}
|
||||
{\bf{i)}} - Was macht folgender Befehl?
|
||||
\begin{verbatim}
|
||||
find / -user otto -iname "*bash*" -exec cp {} /data/otto/ \;
|
||||
\end{verbatim}
|
||||
{\bf{j)}} - Was machen folgende Befehle?
|
||||
\begin{verbatim}
|
||||
for ip in $(seq 200 254);do echo 192.168.13.$ip; done > ips.txt
|
||||
for ip in $(cat ips.txt);do dig -x $ip | grep $ip >> dns.txt; done
|
||||
\end{verbatim}
|
||||
\end{quote}
|
||||
|
||||
\newpage
|
||||
|
||||
{\bf{Lösungen:}}
|
||||
\begin{quote}
|
||||
{\bf{a)}} - Zählt wie oft der Begriff \emph{ether} in der Ausgabe von grep vorkommt.\\\\
|
||||
{\bf{b)}} - Komprimiert und archiviert den Inhalt des Ordners \verb|/root/| in der Datei \verb|backup.tar.gz|\\\\
|
||||
{\bf{c)}} - Gibt die Begriffe in alphabetischer Reihenfolge ohne Duplikate aus\\\\
|
||||
{\bf{d)}} -
|
||||
\begin{verbatim}
|
||||
cat /etc/passwd | cut -d ':' -f 6 > homes.txt
|
||||
\end{verbatim}
|
||||
{\bf{e)}} -
|
||||
\begin{verbatim}
|
||||
for z in {1..10};do echo $((z*z)); done
|
||||
\end{verbatim}
|
||||
{\bf{f)}}
|
||||
\begin{verbatim}
|
||||
- Alle 10 Minuten
|
||||
- Sonntags um 8:05 Uhr
|
||||
- An jedem 1.Tag im Monat um 10:00 Uhr
|
||||
\end{verbatim}
|
||||
{\bf{g)}} - Beispiellösung zur Ping-sweep Aufgabe\\\\
|
||||
{\bf{h)}} - Vereinfachung des Ping-sweeps mit \verb|-g|\\\\
|
||||
{\bf{i)}} - Findet alle Dateien von user \verb|otto| mit dem Begriff bash im Namen und kopiert diese nach \verb|/data/otto|.\\\\
|
||||
{\bf{j)}} - 1. Zeile: generiert IPs (24er Netz 192.168.13.x) und speichert diese in \verb|ips.txt|, 2.Zeile macht einen reverse DNS-lookup zu jeder IP in \verb|ips.txt|
|
||||
\end{quote}
|
||||
|
||||
\end{document}
|
||||
|
||||
|
BIN
m122/Lektion13/Uebung/img/.DS_Store
vendored
Normal file
BIN
m122/Lektion13/Uebung/img/bfsulogo.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
m122/Lektion13/Uebung/img/bzulogo.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
m122/Lektion13/Uebung_Loes/.DS_Store
vendored
Normal file
BIN
m122/Lektion13/Uebung_Loes/BashUebungsaugaben1und2_Loes.pdf
Normal file
271
m122/Lektion13/Uebung_Loes/BashUebungsaugaben1und2_Loes.tex
Normal file
@ -0,0 +1,271 @@
|
||||
\documentclass[a4paper,11pt]{report}
|
||||
%\usepackage{isolatin1}
|
||||
%\usepackage{german}
|
||||
\usepackage{float}
|
||||
\usepackage{listings}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{lastpage}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{soul}
|
||||
|
||||
\usepackage{lmodern} % Latin Modern
|
||||
|
||||
\usepackage[ngerman]{babel, translator}
|
||||
\usepackage[utf8]{inputenc}
|
||||
|
||||
|
||||
%\usepackage[ngerman]{babel, translator}
|
||||
|
||||
|
||||
%\usepackage[utf8x]{inputenc}
|
||||
\usepackage[left=2.5cm,top=2cm,right=2cm,bottom=4cm]{geometry}
|
||||
|
||||
%Code listings
|
||||
\usepackage{listings}
|
||||
\usepackage{etoolbox}
|
||||
\patchcmd{\chapter}{\thispagestyle{plain}}{\thispagestyle{fancy}}{}{}
|
||||
|
||||
|
||||
\usepackage[]{hyperref}
|
||||
\hypersetup{
|
||||
linkcolor=blue,
|
||||
pagecolor= blue,
|
||||
urlcolor= blue,
|
||||
colorlinks=true,
|
||||
pdfborder=0 0 0
|
||||
}
|
||||
\usepackage[
|
||||
nonumberlist, %keine Seitenzahlen anzeigen
|
||||
acronym, %ein Abk�rzungsverzeichnis erstellen
|
||||
toc, %Eintr�ge im Inhaltsverzeichnis
|
||||
section] %im Inhaltsverzeichnis auf section-Ebene erscheinen
|
||||
{glossaries}
|
||||
|
||||
|
||||
\usepackage{hyperref}
|
||||
|
||||
%Ein eigenes Symbolverzeichnis erstellen
|
||||
\newglossary[slg]{symbolslist}{syi}{syg}{Symbolverzeichnis}
|
||||
|
||||
%Den Punkt am Ende jeder Beschreibung deaktivieren
|
||||
\renewcommand*{\glspostdescription}{}
|
||||
|
||||
|
||||
|
||||
%Glossar-Befehle anschalten
|
||||
\makeglossaries
|
||||
|
||||
%Diese Befehle sortieren die Eintr�ge in den
|
||||
%einzelnen Listen:
|
||||
%makeindex -s datei.ist -t datei.alg -o datei.acr datei.acn
|
||||
%makeindex -s datei.ist -t datei.glg -o datei.gls datei.glo
|
||||
%makeindex -s datei.ist -t datei.slg -o datei.syi datei.syg
|
||||
|
||||
|
||||
|
||||
% define acronyms here
|
||||
\newacronym{PDF}{PDF}{Portable Document Format}
|
||||
\newacronym{APDU}{APDU}{Application Protocol Data Unit}
|
||||
\newacronym{AGPL}{AGPL}{Affero General Public License}
|
||||
\newacronym{GPL}{GPL}{General Public License}
|
||||
\newacronym{LGPL}{LGPL}{Lesser General Public License}
|
||||
|
||||
|
||||
\newacronym{DCT}{DCT}{Discrete Cosine Transform}
|
||||
\newacronym{TTA}{TTA}{Trusted Timestamp Authority}
|
||||
\newacronym{OCSP}{OCSP}{Online Certificate Status Protocol}
|
||||
\newacronym{PKI}{PKI}{Public Key Infrastructure}
|
||||
|
||||
|
||||
|
||||
%\newacronym{BDD}{BDD}{Behaviour Driven Development\protect\glsadd{glos:BDD}}
|
||||
|
||||
\newglossaryentry{Application Protocol Data Unit}
|
||||
{
|
||||
name={Application Protocol Data Unit},
|
||||
description={blablabla}
|
||||
}
|
||||
|
||||
\newglossaryentry{Copyleft}
|
||||
{
|
||||
name={Copyleft},
|
||||
description={The copyleft ist the obligation required by the GLP (or AGPL) license to offer the source code of a work (and every derivative of it) to the public (open source). Copy{\bf{left}} can also be considered as the opposite of copy{\bf{right}}. }
|
||||
}
|
||||
|
||||
|
||||
%Befehle f�r Glossar
|
||||
|
||||
\usepackage{helvet}
|
||||
\renewcommand{\familydefault}{\sfdefault}
|
||||
|
||||
\renewcommand\contentsname{Inhaltsverzeichnis}
|
||||
|
||||
|
||||
%Einstellungen f??r code listings
|
||||
\lstset{inputencoding=utf8, language=Java,tabsize=2, basicstyle=\small,breaklines=true,showstringspaces=false}
|
||||
\pagestyle{fancy}
|
||||
\setlength{\headheight}{38pt}
|
||||
\setlength{\headwidth}{470pt}
|
||||
\renewcommand{\headrule}{\hskip -\leftskip{\bf \quad \quad}\vbox to 5pt{\hbox to 455pt{\hrulefill}}}
|
||||
\renewcommand{\footrule}{\hskip-\leftskip{\bf \quad \quad}{\hbox to 450 pt{\hrulefill}\newline}}
|
||||
\fancyhf{}
|
||||
\fancyheadoffset[L]{1cm}
|
||||
\fancyfootoffset[L]{1cm}
|
||||
%Kopfzeile links bzw. innen
|
||||
\fancyhead[L]{\includegraphics[height=0.6in]{img/bfsulogo.jpg}}
|
||||
%Kopfzeile mittig
|
||||
\fancyhead[C]{}
|
||||
%Kopfzeile rechts bzw. au??????????�?en
|
||||
\fancyhead[R]{\hspace{10pt} Modul 122\\Abläufe mit Skripts/Makros automatisieren\\ \rightmark }
|
||||
\fancyheadoffset[L]{1cm}
|
||||
\fancyfootoffset[L]{1cm}
|
||||
%Linie oben
|
||||
\renewcommand{\headrulewidth}{0.7pt}
|
||||
%Fu??????????�?zeile mittig
|
||||
\cfoot{\vspace*{6mm}page:\ \thepage\ of \pageref{LastPage}}
|
||||
\fancyfoot[R]{}
|
||||
% footnote in footer
|
||||
\newcommand{\fancyfootnotetext}[2]{%
|
||||
\fancypagestyle{dingens}{%
|
||||
\fancyfoot[LO,RE]{\parbox{12cm}{\footnotemark[#1]\footnotesize #2}}%
|
||||
}%
|
||||
\thispagestyle{dingens}%
|
||||
}
|
||||
%Linie unten
|
||||
\renewcommand{\footrulewidth}{0.5pt}
|
||||
|
||||
\vspace*{15mm}
|
||||
\textwidth 450pt
|
||||
|
||||
|
||||
|
||||
\begin{document}
|
||||
|
||||
\setcounter{tocdepth}{5}
|
||||
|
||||
|
||||
|
||||
%\thispagestyle{empty}
|
||||
|
||||
\begin{center}
|
||||
|
||||
\vspace{48pt}
|
||||
|
||||
|
||||
\vspace{15pt}
|
||||
\begin{huge}
|
||||
\end{huge}
|
||||
\vspace{10pt}
|
||||
\begin{center}
|
||||
\begin{Large}
|
||||
Linux Bash \\ \vspace{20pt}
|
||||
Beispiellösungen Übungsaufgaben 1 \& 2
|
||||
\end{Large}
|
||||
\end{center}
|
||||
|
||||
\vspace{10pt}
|
||||
|
||||
\end{center}
|
||||
|
||||
\begin{scriptsize}
|
||||
\begin{center}
|
||||
\noindent Mario Bischof
|
||||
\end{center}
|
||||
\end{scriptsize}
|
||||
\newpage
|
||||
\begin{quote}
|
||||
{\bf{Aufgabe 1.1:}}\\\\
|
||||
Der Dateiname, welcher die Benutzernamen beinhaltet, wird mit \verb|$1| übergeben.
|
||||
\begin{verbatim}
|
||||
#!/bin/bash
|
||||
for user in $(cat $1); do useradd $user; done
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
{\bf{Aufgabe 1.2:}}\\\\
|
||||
Der Dateiname, welcher die Gruppen beinhaltet, wird it \verb|$1| übergeben, der Benutzernamen mit \verb|$2|.
|
||||
\begin{verbatim}
|
||||
#!/bin/bash
|
||||
for group in $(cat $1); do groupadd $group $2; done
|
||||
\end{verbatim}
|
||||
|
||||
{\bf{Aufgabe 1.3:}}\\\\
|
||||
Der Benutzername wird mit \verb|$1| übergeben
|
||||
\begin{verbatim}
|
||||
#!/bin/bash
|
||||
name=$1_$(date '+%y-%m-%d').tar.gz;
|
||||
find / -user $1 -exec cp {} /root/found/ \;
|
||||
tar -zcvf "/root/found/$name" /root/found/;
|
||||
find /root/found/ -type f ! -name "$name" -delete;
|
||||
\end{verbatim}
|
||||
|
||||
{\bf{Aufgabe 1.4:}}\\\\
|
||||
Das tool \verb|fping| muss installiert sein (\verb|apt-get install fping|).
|
||||
\begin{verbatim}
|
||||
#!/bin/bash
|
||||
for i in $( ifconfig | grep "inet Adr" | grep -v "127.0.0.1" |
|
||||
cut -d ":" -f 2 | cut -d "." -f 1-3 ); do
|
||||
for k in $(seq 1 255); do
|
||||
fping -c 1 -t250 $i.$k 2>&1 | grep " 0% " | cut -d " " -f 1 >> ips.txt
|
||||
done
|
||||
done
|
||||
|
||||
# alternative Lösung:
|
||||
fping -g -c 1 -t250 172.16.6.0/24 2>&1 | grep " 0% " | cut -d " " -f 1 > ips.txt
|
||||
\end{verbatim}
|
||||
|
||||
{\bf{Aufgabe 1.5:}}\\\\
|
||||
Bonusfrage
|
||||
\newpage
|
||||
{\bf{Aufgabe 2.1:}}
|
||||
\begin{verbatim}
|
||||
[root@host: ] mkdir /root/trash
|
||||
[root@host: ] touch /root/trash/file{1..10}
|
||||
[root@host: ] nano /root/trash.sh
|
||||
#!/bin/bash
|
||||
rm /root/trash/*
|
||||
[root@host: ] chmod +x trash.sh
|
||||
[root@host: ] crontab -e
|
||||
*/5 * * * * /root/trash.sh
|
||||
[root@host: ] watch ls /root/trash
|
||||
(Warten bis files verschwinden --> erfolgreiche Ausführung)
|
||||
\end{verbatim}
|
||||
{\bf{Aufgabe 2.2:}}\\\\
|
||||
IP wird als \verb|$1| übergeben, \emph{ban} oder \emph{unban} als \verb|$2|.
|
||||
\begin{verbatim}
|
||||
#!/bin/bash
|
||||
if [ $2 = "ban" ]
|
||||
then
|
||||
echo "banning " $1
|
||||
iptables -A INPUT -s $1 -j DROP
|
||||
elif [ $2 = "unban" ]
|
||||
then
|
||||
echo "unbanning " $1
|
||||
iptables -D INPUT -s $1 DROP
|
||||
else
|
||||
echo "Verwendung:"
|
||||
echo "1.Arg: IP-Adresse"
|
||||
echo "2.Arg.: ban oder unban"
|
||||
echo "Beispiel: ./ban.sh 192.168.13.3 ban"
|
||||
fi
|
||||
\end{verbatim}
|
||||
|
||||
{\bf{Aufgabe 2.4:}}\\\\
|
||||
Setzen des SGID Bits (3 verschiedene Varianten):
|
||||
\begin{verbatim}
|
||||
[root@host: ] chmod g+s /data/myFile
|
||||
[root@host: ] chmod +s /data/myFile
|
||||
[root@host: ] chmod 2755 /data/myFile
|
||||
\end{verbatim}
|
||||
Setzen des Sticky Bits (3 verschiedene Varianten):
|
||||
\begin{verbatim}
|
||||
[root@host: ] chmod o+t /data
|
||||
[root@host: ] chmod +t /data
|
||||
[root@host: ] chmod 1755 /data
|
||||
\end{verbatim}
|
||||
\end{quote}
|
||||
|
||||
|
||||
\end{document}
|
||||
|
||||
|
@ -0,0 +1,107 @@
|
||||
::: center
|
||||
::: huge
|
||||
:::
|
||||
|
||||
::: center
|
||||
::: Large
|
||||
Linux Bash\
|
||||
Beispiellösungen Übungsaufgaben 1 & 2
|
||||
:::
|
||||
:::
|
||||
:::
|
||||
|
||||
::: scriptsize
|
||||
::: center
|
||||
Mario Bischof
|
||||
:::
|
||||
:::
|
||||
|
||||
> **Aufgabe 1.1:**\
|
||||
> \
|
||||
> Der Dateiname, welcher die Benutzernamen beinhaltet, wird mit `$1`
|
||||
> übergeben.
|
||||
>
|
||||
> #!/bin/bash
|
||||
> for user in $(cat $1); do useradd $user; done
|
||||
>
|
||||
> **Aufgabe 1.2:**\
|
||||
> \
|
||||
> Der Dateiname, welcher die Gruppen beinhaltet, wird it `$1` übergeben,
|
||||
> der Benutzernamen mit `$2`.
|
||||
>
|
||||
> #!/bin/bash
|
||||
> for group in $(cat $1); do groupadd $group $2; done
|
||||
>
|
||||
> **Aufgabe 1.3:**\
|
||||
> \
|
||||
> Der Benutzername wird mit `$1` übergeben
|
||||
>
|
||||
> #!/bin/bash
|
||||
> name=$1_$(date '+%y-%m-%d').tar.gz;
|
||||
> find / -user $1 -exec cp {} /root/found/ \;
|
||||
> tar -zcvf "/root/found/$name" /root/found/;
|
||||
> find /root/found/ -type f ! -name "$name" -delete;
|
||||
>
|
||||
> **Aufgabe 1.4:**\
|
||||
> \
|
||||
> Das tool `fping` muss installiert sein (`apt-get install fping`).
|
||||
>
|
||||
> #!/bin/bash
|
||||
> for i in $( ifconfig | grep "inet Adr" | grep -v "127.0.0.1" |
|
||||
> cut -d ":" -f 2 | cut -d "." -f 1-3 ); do
|
||||
> for k in $(seq 1 255); do
|
||||
> fping -c 1 -t250 $i.$k 2>&1 | grep " 0% " | cut -d " " -f 1 >> ips.txt
|
||||
> done
|
||||
> done
|
||||
>
|
||||
> # alternative Lösung:
|
||||
> fping -g -c 1 -t250 172.16.6.0/24 2>&1 | grep " 0% " | cut -d " " -f 1 > ips.txt
|
||||
>
|
||||
> **Aufgabe 1.5:**\
|
||||
> \
|
||||
> Bonusfrage **Aufgabe 2.1:**
|
||||
>
|
||||
> [root@host: ] mkdir /root/trash
|
||||
> [root@host: ] touch /root/trash/file{1..10}
|
||||
> [root@host: ] nano /root/trash.sh
|
||||
> #!/bin/bash
|
||||
> rm /root/trash/*
|
||||
> [root@host: ] chmod +x trash.sh
|
||||
> [root@host: ] crontab -e
|
||||
> */5 * * * * /root/trash.sh
|
||||
> [root@host: ] watch ls /root/trash
|
||||
> (Warten bis files verschwinden --> erfolgreiche Ausführung)
|
||||
>
|
||||
> **Aufgabe 2.2:**\
|
||||
> \
|
||||
> IP wird als `$1` übergeben, *ban* oder *unban* als `$2`.
|
||||
>
|
||||
> #!/bin/bash
|
||||
> if [ $2 = "ban" ]
|
||||
> then
|
||||
> echo "banning " $1
|
||||
> iptables -A INPUT -s $1 -j DROP
|
||||
> elif [ $2 = "unban" ]
|
||||
> then
|
||||
> echo "unbanning " $1
|
||||
> iptables -D INPUT -s $1 DROP
|
||||
> else
|
||||
> echo "Verwendung:"
|
||||
> echo "1.Arg: IP-Adresse"
|
||||
> echo "2.Arg.: ban oder unban"
|
||||
> echo "Beispiel: ./ban.sh 192.168.13.3 ban"
|
||||
> fi
|
||||
>
|
||||
> **Aufgabe 2.4:**\
|
||||
> \
|
||||
> Setzen des SGID Bits (3 verschiedene Varianten):
|
||||
>
|
||||
> [root@host: ] chmod g+s /data/myFile
|
||||
> [root@host: ] chmod +s /data/myFile
|
||||
> [root@host: ] chmod 2755 /data/myFile
|
||||
>
|
||||
> Setzen des Sticky Bits (3 verschiedene Varianten):
|
||||
>
|
||||
> [root@host: ] chmod o+t /data
|
||||
> [root@host: ] chmod +t /data
|
||||
> [root@host: ] chmod 1755 /data
|
BIN
m122/Lektion13/Uebung_Loes/img/.DS_Store
vendored
Normal file
BIN
m122/Lektion13/Uebung_Loes/img/bfsulogo.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
m122/Lektion13/Uebung_Loes/img/bzulogo.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
m122/Lektion13/Uebung_Loes/img/ps1.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
m122/Lektion13/Uebung_Loes/img/ps2.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
m122/Lektion13/Uebung_Loes/img/ps3.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
m122/Lektion13/Uebung_Loes/img/ps4.png
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
m122/Lektion13/Uebung_Loes/img/ps5.png
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
m122/Lektion13/Uebung_Loes/img/ps6.png
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
m122/Lektion13/Uebung_Loes/img/ps7.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
m122/Lektion13/Uebung_Loes/img/ps8.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
m122/Lektion13/Uebung_Loes/img/ps9.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
m122/Lektion7/Praesentation/Bash_L1.pdf
Normal file
303
m122/Lektion7/Praesentation/Bash_L1.tex
Normal file
@ -0,0 +1,303 @@
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% Beamer Presentation
|
||||
% LaTeX Template
|
||||
% Version 1.0 (10/11/12)
|
||||
%
|
||||
% This template has been downloaded from:
|
||||
% http://www.LaTeXTemplates.com
|
||||
%
|
||||
% License:
|
||||
% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/)
|
||||
%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
%----------------------------------------------------------------------------------------
|
||||
% PACKAGES AND THEMES
|
||||
%----------------------------------------------------------------------------------------
|
||||
|
||||
\documentclass{beamer}
|
||||
|
||||
\usepackage{listings}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{lastpage}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{soul}
|
||||
|
||||
\usepackage{lmodern} % Latin Modern
|
||||
|
||||
\usepackage[utf8]{inputenc}
|
||||
|
||||
\definecolor{beamer@zueriblue}{HTML}{009EE1}
|
||||
\definecolor{beamer@lightblue}{HTML}{8BCCE8}\DeclareUnicodeCharacter{00A0}{ }
|
||||
|
||||
\mode<presentation> {
|
||||
|
||||
% The Beamer class comes with a number of default slide themes
|
||||
% which change the colors and layouts of slides. Below this is a list
|
||||
% of all the themes, uncomment each in turn to see what they look like.
|
||||
|
||||
%\usetheme{default}
|
||||
%\usetheme{AnnArbor}
|
||||
%\usetheme{Antibes}
|
||||
%\usetheme{Bergen}
|
||||
%\usetheme{Berkeley}
|
||||
%\usetheme{Berlin}
|
||||
%\usetheme{Boadilla}
|
||||
%\usetheme{CambridgeUS}
|
||||
%\usetheme{Copenhagen}
|
||||
%\usetheme{Darmstadt}
|
||||
%\usetheme{Dresden}
|
||||
%\usetheme{Frankfurt}
|
||||
%\usetheme{Goettingen}
|
||||
%\usetheme{Hannover}
|
||||
%\usetheme{Ilmenau}
|
||||
%\usetheme{JuanLesPins}
|
||||
%\usetheme{Luebeck}
|
||||
%\usetheme{Madrid}
|
||||
%\usetheme{Malmoe}
|
||||
%\usetheme{Marburg}
|
||||
%\usetheme{Montpellier}
|
||||
%\usetheme{PaloAlto}
|
||||
%\usetheme{Pittsburgh}
|
||||
%\usetheme{Rochester}
|
||||
%\usetheme{Singapore}
|
||||
%\usetheme{Szeged}
|
||||
%\usetheme{Warsaw}
|
||||
|
||||
% As well as themes, the Beamer class has a number of color themes
|
||||
% for any slide theme. Uncomment each of these in turn to see how it
|
||||
% changes the colors of your current slide theme.
|
||||
|
||||
%\usecolortheme{albatross}
|
||||
%\usecolortheme{beaver}
|
||||
%\usecolortheme{beetle}
|
||||
%\usecolortheme{crane}
|
||||
%\usecolortheme{dolphin}
|
||||
%\usecolortheme{dove}
|
||||
%\usecolortheme{fly}
|
||||
%\usecolortheme{lily}
|
||||
%\usecolortheme{orchid}
|
||||
%\usecolortheme{rose}
|
||||
%\usecolortheme{seagull}
|
||||
%\usecolortheme{seahorse}
|
||||
%\usecolortheme{whale}
|
||||
%\usecolortheme{wolverine}
|
||||
|
||||
\usetheme{Dresden}
|
||||
\setbeamercolor*{palette primary}{use=dove,fg=blue,bg=beamer@lightblue}
|
||||
|
||||
\setbeamercolor*{palette secondary}{use=dove,fg=blue,bg=beamer@lightblue}
|
||||
\setbeamercolor*{palette tertiary}{use=dove,fg=white,bg=beamer@zueriblue}
|
||||
|
||||
|
||||
%\setbeamertemplate{footline} % To remove the footer line in all slides uncomment this line
|
||||
%\setbeamertemplate{footline}[page number] % To replace the footer line in all slides with a simple slide count uncomment this line
|
||||
|
||||
%\setbeamertemplate{navigation symbols}{} % To remove the navigation symbols from the bottom of all slides uncomment this line
|
||||
}
|
||||
|
||||
\usepackage{graphicx} % Allows including images
|
||||
\usepackage{booktabs} % Allows the use of \toprule, \midrule and \bottomrule in tables
|
||||
|
||||
%----------------------------------------------------------------------------------------
|
||||
% TITLE PAGE
|
||||
%----------------------------------------------------------------------------------------
|
||||
|
||||
\title[Bash - Lektion 1]{Linux Shell - Lektion 1} % The short title appears at the bottom of every slide, the full title is only on the title page
|
||||
|
||||
\author{Mario Bischof} % Your name
|
||||
\institute[BFSU] % Your institution as it will appear on the bottom of every slide, may be shorthand to save space
|
||||
{
|
||||
Berufsfachschule Uster \\ % Your institution for the title page
|
||||
\medskip
|
||||
\href{mailto:mario.bischof@bzu.ch}{mario.bischof@bzu.ch}% Your email address
|
||||
}
|
||||
\date{\today} % Date, can be changed to a custom date
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{frame}
|
||||
\includegraphics[height=0.4in]{img/bfsulogo.jpg}
|
||||
\titlepage % Print the title page as the first slide
|
||||
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Übersicht} % Table of contents slide, comment this block out to remove it
|
||||
\tableofcontents % Throughout your presentation, if you choose to use \section{} and \subsection{} commands, these will automatically be printed on this slide as an overview of your presentation
|
||||
\end{frame}
|
||||
|
||||
%----------------------------------------------------------------------------------------
|
||||
% PRESENTATION SLIDES
|
||||
%----------------------------------------------------------------------------------------
|
||||
|
||||
%------------------------------------------------
|
||||
%------------------------------------------------
|
||||
|
||||
% A subsection can be created just before a set of slides with a common theme to further break down your presentation into chunks
|
||||
|
||||
\section[shell]{Shellprogrammierung}
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Shellprogrammierung}
|
||||
|
||||
|
||||
\begin{itemize}
|
||||
\item Linux bietet etliche Befehle, welche in der Shell direkt oder in einem Skript gebraucht werden können wie zB. \verb|cp|, \verb|alias|, \verb|cat|, \verb|rm|
|
||||
\item Daneben bietet die Shell Programmierstrukturen wie zB. Schleifen, Verzweigungen, Variablen, usw.
|
||||
\item Beide Elemente können in einem Skript verwendet werden, um Aufgaben auf dem System zu automatisieren
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\section[hierarchie]{Linux Verzeichnishierarchie}
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Linux Verzeichnishierarchie}
|
||||
|
||||
\begin{itemize}
|
||||
\item Der Verzeichnisbaum beginnt bei Linux beim Verzeichnis \verb|/| (Vergleichbar mit \verb|C:\| unter Windows)
|
||||
\item Das Verzeichnis \verb|/|wird auch Wurzel- oder Rootverzeichnis genannt
|
||||
\item Verzeichnisse eine oder mehrere Hierarchiestufen weiter unten werden durch \verb|/|-Zeichen getrennt
|
||||
\item Beispiele:
|
||||
\begin{verbatim}
|
||||
/etc/
|
||||
/usr/local/nginx
|
||||
/usr/bin/
|
||||
/home/user1
|
||||
\end{verbatim}
|
||||
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\section[prompt]{Linuxprompt}
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Linuxprompt}
|
||||
|
||||
\begin{itemize}
|
||||
\item Die Eingabeaufforderung unter Linux (auch prompt genannt) sieht zB. wiefolgt aus:
|
||||
\begin{verbatim}
|
||||
user@host:/#
|
||||
\end{verbatim}
|
||||
\item Der prompt bildet sich nach dem Schema: \verb|<akt.username>@<hostname>:<akt.verzeichnis>#|
|
||||
\item Das Tildezeichen \verb|~| ist ein Kürzel für das Heimatverzeichnis des aktuellen Benutzers
|
||||
\item Die Heimatverzeichnisse befinden sich i.d.R. unter \verb|/home/<benutzername>|
|
||||
\item Einzige Ausnahme: Das Heimatverzeichnis des Administratorusers (\verb|root|) befindet sich unter \verb|/root/|
|
||||
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\section[system]{Systemspezifische Befehle}
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Systemspezifische Befehle}
|
||||
\begin{itemize}
|
||||
\item Der Befehl \verb|reboot| (oder \verb|shutdown -r| oder \verb|init 6|) startet das System neu
|
||||
\item Der Befehl \verb|halt| (\verb|shutdown -h|, \verb|init 0| oder \verb|poweroff|) schaltet das System ab
|
||||
\end{itemize}
|
||||
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
|
||||
\section[hilfe]{Hilfe holen}
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Hilfe holen}
|
||||
|
||||
\begin{itemize}
|
||||
\item Der Befehl \verb|man| öffnet sie Hilfeseiten (manual) eines Befehls
|
||||
\\Syntax: \verb|man <Befehlsname>|
|
||||
\item Der Befehl \verb|apropos| durchsucht alle Hilfeseiten nach einem Stichwort
|
||||
\\Syntax: \verb|apropos <Stichwort>|
|
||||
\item Der Befehl \verb|which| findet den Ort eines installierten Programmes
|
||||
\\Syntax: \verb|which <Befehl>|
|
||||
\end{itemize}
|
||||
|
||||
\end{frame}
|
||||
|
||||
\section[user]{Userspezifische Befehle}
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Userspezifische Befehle}
|
||||
|
||||
\begin{itemize}
|
||||
\item Der Befehl \verb|whoami| zeigt den aktuellen Benutzernamen an
|
||||
\item Der Befehl \verb|who| zeigt alle am System angemeldeten Benutzer an
|
||||
\item Der Befehl \verb|groups| zeigt die Gruppen des aktuellen Benutzernamen an
|
||||
\item Der Befehl \verb|id| zeigt die Nutzerid und Gruppen des aktuellen Benutzers an
|
||||
\item Der Befehl \verb|su| wechselt den aktuellen Benutzer
|
||||
\\Syntax: \verb|su - <User>| (- sogt dafür, dass ins Heimverzeichnis der neuen Users gewechselt wird)
|
||||
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\section[user]{Userspezifische Befehle}
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Userspezifische Befehle}
|
||||
|
||||
\begin{itemize}
|
||||
\item Der Befehl \verb|useradd| fügt einen neuen Benutzer hinzu
|
||||
\\Syntax: \verb|useradd <User>|
|
||||
\item Der Befehl \verb|userdel| löscht einen bestehenden Benutzer
|
||||
\\Syntax: \verb|userdel <User>|
|
||||
\item Der Befehl \verb|passwd| kann (unter anderem) das Passwort wechseln
|
||||
\\Syntax: \verb|passwd <User>|
|
||||
\item Der Befehl \verb|logout| loggt den aktuellen Benutzer vom System aus (ebenso \verb|exit|)
|
||||
|
||||
\end{itemize}
|
||||
|
||||
\end{frame}
|
||||
|
||||
\section[aliase]{Aliase}
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Aliase}
|
||||
|
||||
\begin{itemize}
|
||||
\item Aliase dienen als Nutzerspezifisches Kürzel für einen Befehl / Befehlskombination
|
||||
\item Ein alias wird wiefolgt gesetzt: \verb|alias <aliasname>="<befehl mit params/args>"|
|
||||
\item Beispiel:
|
||||
\begin{verbatim}
|
||||
user@host:/etc# alias gohome="cd ~"
|
||||
user@host:/etc# pwd
|
||||
/etc
|
||||
user@host:/etc# gohome
|
||||
user@host:~# pwd
|
||||
/home/user
|
||||
\end{verbatim}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\section[cd]{Verzeichnisrelevante Befehle}
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Verzeichnisrelevante Befehle}
|
||||
\begin{itemize}
|
||||
\item Der Befehl \verb|pwd| (\emph{present work directory}) zeigt das aktuelle Verzeichnis an
|
||||
\item Der Befehl \verb|cd| ändert das aktuelle Verzeichnis. \\Syntax: \verb|cd <Zielverzeichnis>|
|
||||
\item Der Befehl \verb|mkdir| erstellt ein neues Verzeichnis. \\Syntax: \verb|mkdir <Verzeichnisname>|
|
||||
\item Der Befehl \verb|rmdir| lsöcht ein bestehendes Verzeichnis. \\Syntax: \verb|rmdir <Verzeichnisname>| (Verzeichnis muss leer sein!)
|
||||
\item Der Befehl \verb|ls| listet den Verzeichnisinhalt auf \\Syntax: \verb|ls <Verzeichnisname>|
|
||||
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\section[cd]{Dateirelevante Befehle}
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Dateirelevante Befehle}
|
||||
\begin{itemize}
|
||||
\item Der Befehl \verb|cp| kopiert Dateien/Verzeichnisse \\Syntax: \verb|cp <Quelldatei> <Zieldatei>| \\Syntax Verzeichnisse: \verb|cp -R <Quellverzeichnis> <Zielverzeichnis>|
|
||||
\item Der Befehl \verb|rm| löscht Dateien/Verzeichnisse \\Syntax: \verb|rm <Zieldatei>| \\Syntax Verzeichnisse: \verb|rm -r <Zelverzeichnis>|
|
||||
\item Der Befehl \verb|mv| verschiebt (= umbenennen) Dateien/Verzeichnisse \\Syntax: \verb|mv <altedatei> <neuedatei>|
|
||||
\item Der Befehl \verb|touch| erstellt eine neue leere Datei \\Syntax: \verb|touch <Dateiname>|
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\section[cd]{Weitere häufig gebrauchte Befehle}
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Dateirelevante Befehle}
|
||||
\begin{itemize}
|
||||
\item Der Befehl \verb|cat| gibt Dateinhalt aus\\Syntax: \verb|cat <Zieldatei>|
|
||||
\item Der Befehl \verb|wc| zählt Wörter oder Linien eines Dateiinhaltes\\Syntax (linien): \verb|wc -l <Zieldatei>| (-w zählt \# Wörter)
|
||||
\item Der Befehl \verb|echo| gibt eine Zeichenkette aus\\Syntax: \verb|echo "<Zeichenkette>"|
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\end{document}
|
209
m122/Lektion7/Praesentation/Lektion-Bash1.md
Normal file
@ -0,0 +1,209 @@
|
||||
::: frame
|
||||
![image](img/bfsulogo.jpg){height="0.4in"}
|
||||
:::
|
||||
|
||||
::: frame
|
||||
### Übersicht
|
||||
:::
|
||||
|
||||
# Shellprogrammierung
|
||||
|
||||
::: frame
|
||||
### Shellprogrammierung
|
||||
|
||||
- Linux bietet etliche Befehle, welche in der Shell direkt oder in
|
||||
einem Skript gebraucht werden können wie zB. `cp`, `alias`, `cat`,
|
||||
`rm`
|
||||
|
||||
- Daneben bietet die Shell Programmierstrukturen wie zB. Schleifen,
|
||||
Verzweigungen, Variablen, usw.
|
||||
|
||||
- Beide Elemente können in einem Skript verwendet werden, um Aufgaben
|
||||
auf dem System zu automatisieren
|
||||
:::
|
||||
|
||||
# Linux Verzeichnishierarchie
|
||||
|
||||
::: frame
|
||||
### Linux Verzeichnishierarchie
|
||||
|
||||
- Der Verzeichnisbaum beginnt bei Linux beim Verzeichnis `/`
|
||||
(Vergleichbar mit `C:\` unter Windows)
|
||||
|
||||
- Das Verzeichnis `/`wird auch Wurzel- oder Rootverzeichnis genannt
|
||||
|
||||
- Verzeichnisse eine oder mehrere Hierarchiestufen weiter unten werden
|
||||
durch `/`-Zeichen getrennt
|
||||
|
||||
- Beispiele:
|
||||
|
||||
/etc/
|
||||
/usr/local/nginx
|
||||
/usr/bin/
|
||||
/home/user1
|
||||
:::
|
||||
|
||||
# Linuxprompt
|
||||
|
||||
::: frame
|
||||
### Linuxprompt
|
||||
|
||||
- Die Eingabeaufforderung unter Linux (auch prompt genannt) sieht zB.
|
||||
wiefolgt aus:
|
||||
|
||||
user@host:/#
|
||||
|
||||
- Der prompt bildet sich nach dem Schema:
|
||||
`<akt.username>@<hostname>:<akt.verzeichnis>#`
|
||||
|
||||
- Das Tildezeichen `~` ist ein Kürzel für das Heimatverzeichnis des
|
||||
aktuellen Benutzers
|
||||
|
||||
- Die Heimatverzeichnisse befinden sich i.d.R. unter
|
||||
`/home/<benutzername>`
|
||||
|
||||
- Einzige Ausnahme: Das Heimatverzeichnis des Administratorusers
|
||||
(`root`) befindet sich unter `/root/`
|
||||
:::
|
||||
|
||||
# Systemspezifische Befehle
|
||||
|
||||
::: frame
|
||||
### Systemspezifische Befehle
|
||||
|
||||
- Der Befehl `reboot` (oder `shutdown -r` oder `init 6`) startet das
|
||||
System neu
|
||||
|
||||
- Der Befehl `halt` (`shutdown -h`, `init 0` oder `poweroff`) schaltet
|
||||
das System ab
|
||||
:::
|
||||
|
||||
# Hilfe holen
|
||||
|
||||
::: frame
|
||||
### Hilfe holen
|
||||
|
||||
- Der Befehl `man` öffnet sie Hilfeseiten (manual) eines Befehls\
|
||||
Syntax: `man <Befehlsname>`
|
||||
|
||||
- Der Befehl `apropos` durchsucht alle Hilfeseiten nach einem
|
||||
Stichwort\
|
||||
Syntax: `apropos <Stichwort>`
|
||||
|
||||
- Der Befehl `which` findet den Ort eines installierten Programmes\
|
||||
Syntax: `which <Befehl>`
|
||||
:::
|
||||
|
||||
# Userspezifische Befehle
|
||||
|
||||
::: frame
|
||||
### Userspezifische Befehle
|
||||
|
||||
- Der Befehl `whoami` zeigt den aktuellen Benutzernamen an
|
||||
|
||||
- Der Befehl `who` zeigt alle am System angemeldeten Benutzer an
|
||||
|
||||
- Der Befehl `groups` zeigt die Gruppen des aktuellen Benutzernamen an
|
||||
|
||||
- Der Befehl `id` zeigt die Nutzerid und Gruppen des aktuellen
|
||||
Benutzers an
|
||||
|
||||
- Der Befehl `su` wechselt den aktuellen Benutzer\
|
||||
Syntax: `su - <User>` (- sogt dafür, dass ins Heimverzeichnis der
|
||||
neuen Users gewechselt wird)
|
||||
:::
|
||||
|
||||
# Userspezifische Befehle
|
||||
|
||||
::: frame
|
||||
### Userspezifische Befehle
|
||||
|
||||
- Der Befehl `useradd` fügt einen neuen Benutzer hinzu\
|
||||
Syntax: `useradd <User>`
|
||||
|
||||
- Der Befehl `userdel` löscht einen bestehenden Benutzer\
|
||||
Syntax: `userdel <User>`
|
||||
|
||||
- Der Befehl `passwd` kann (unter anderem) das Passwort wechseln\
|
||||
Syntax: `passwd <User>`
|
||||
|
||||
- Der Befehl `logout` loggt den aktuellen Benutzer vom System aus
|
||||
(ebenso `exit`)
|
||||
:::
|
||||
|
||||
# Aliase
|
||||
|
||||
::: frame
|
||||
### Aliase
|
||||
|
||||
- Aliase dienen als Nutzerspezifisches Kürzel für einen Befehl /
|
||||
Befehlskombination
|
||||
|
||||
- Ein alias wird wiefolgt gesetzt:
|
||||
`alias <aliasname>="<befehl mit params/args>"`
|
||||
|
||||
- Beispiel:
|
||||
|
||||
user@host:/etc# alias gohome="cd ~"
|
||||
user@host:/etc# pwd
|
||||
/etc
|
||||
user@host:/etc# gohome
|
||||
user@host:~# pwd
|
||||
/home/user
|
||||
:::
|
||||
|
||||
# Verzeichnisrelevante Befehle
|
||||
|
||||
::: frame
|
||||
### Verzeichnisrelevante Befehle
|
||||
|
||||
- Der Befehl `pwd` (*present work directory*) zeigt das aktuelle
|
||||
Verzeichnis an
|
||||
|
||||
- Der Befehl `cd` ändert das aktuelle Verzeichnis.\
|
||||
Syntax: `cd <Zielverzeichnis>`
|
||||
|
||||
- Der Befehl `mkdir` erstellt ein neues Verzeichnis.\
|
||||
Syntax: `mkdir <Verzeichnisname>`
|
||||
|
||||
- Der Befehl `rmdir` lsöcht ein bestehendes Verzeichnis.\
|
||||
Syntax: `rmdir <Verzeichnisname>` (Verzeichnis muss leer sein!)
|
||||
|
||||
- Der Befehl `ls` listet den Verzeichnisinhalt auf\
|
||||
Syntax: `ls <Verzeichnisname>`
|
||||
:::
|
||||
|
||||
# Dateirelevante Befehle
|
||||
|
||||
::: frame
|
||||
### Dateirelevante Befehle
|
||||
|
||||
- Der Befehl `cp` kopiert Dateien/Verzeichnisse\
|
||||
Syntax: `cp <Quelldatei> <Zieldatei>`\
|
||||
Syntax Verzeichnisse: `cp -R <Quellverzeichnis> <Zielverzeichnis>`
|
||||
|
||||
- Der Befehl `rm` löscht Dateien/Verzeichnisse\
|
||||
Syntax: `rm <Zieldatei>`\
|
||||
Syntax Verzeichnisse: `rm -r <Zelverzeichnis>`
|
||||
|
||||
- Der Befehl `mv` verschiebt (= umbenennen) Dateien/Verzeichnisse\
|
||||
Syntax: `mv <altedatei> <neuedatei>`
|
||||
|
||||
- Der Befehl `touch` erstellt eine neue leere Datei\
|
||||
Syntax: `touch <Dateiname>`
|
||||
:::
|
||||
|
||||
# Weitere häufig gebrauchte Befehle
|
||||
|
||||
::: frame
|
||||
### Dateirelevante Befehle
|
||||
|
||||
- Der Befehl `cat` gibt Dateinhalt aus\
|
||||
Syntax: `cat <Zieldatei>`
|
||||
|
||||
- Der Befehl `wc` zählt Wörter oder Linien eines Dateiinhaltes\
|
||||
Syntax (linien): `wc -l <Zieldatei>` (-w zählt \# Wörter)
|
||||
|
||||
- Der Befehl `echo` gibt eine Zeichenkette aus\
|
||||
Syntax: `echo "<Zeichenkette>"`
|
||||
:::
|
BIN
m122/Lektion7/Praesentation/img/bfsulogo.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
m122/Lektion7/Praesentation/img/java-program-execution2.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
m122/Lektion7/Praesentation/img/klasse_objekt.gif
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
m122/Lektion7/Praesentation/img/klasse_objekt.png
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
m122/Lektion7/Praesentation/img/objekt.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
m122/Lektion7/Praesentation/img/powershell-logo.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
m122/Lektion7/Praesentation/img/ps1.png
Normal file
After Width: | Height: | Size: 156 KiB |
BIN
m122/Lektion7/Praesentation/img/ps10.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
m122/Lektion7/Praesentation/img/ps11.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
m122/Lektion7/Praesentation/img/ps12.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
m122/Lektion7/Praesentation/img/ps13.png
Normal file
After Width: | Height: | Size: 71 KiB |
BIN
m122/Lektion7/Praesentation/img/ps2.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
m122/Lektion7/Praesentation/img/ps3.png
Normal file
After Width: | Height: | Size: 83 KiB |
BIN
m122/Lektion7/Praesentation/img/ps4.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
m122/Lektion7/Praesentation/img/ps5.png
Normal file
After Width: | Height: | Size: 9.5 KiB |
BIN
m122/Lektion7/Praesentation/img/ps6.png
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
m122/Lektion7/Praesentation/img/ps7.png
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
m122/Lektion7/Praesentation/img/ps8.png
Normal file
After Width: | Height: | Size: 12 KiB |