\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}


