Struktur umgestellt
This commit is contained in:
parent
b7c54658b2
commit
c6e06f8072
@ -28,30 +28,97 @@ werden. F
|
|||||||
Man-Pages oder der Kauf eines entsprechenden Buches. Am besten macht man
|
Man-Pages oder der Kauf eines entsprechenden Buches. Am besten macht man
|
||||||
natürlich beides. ;-)
|
natürlich beides. ;-)
|
||||||
|
|
||||||
\section{Ein- und Ausgabe}\label{ein_und_ausgabe}
|
Eine globale Beschreibung aller gängigen Kommandos würde den Rahmen dieses
|
||||||
|
Textes sprengen. Außerdem wäre es nicht leicht, das zu einer Aufgabe passende
|
||||||
|
Werkzeug zu finden. Die Werkzeuge nach Aufgaben zu sortieren fällt allerdings
|
||||||
|
auch nicht leicht. Die Entwickler der Kommandos versuchen, ihre Tools möglichst
|
||||||
|
universell einsetzbar zu halten, also gibt es keine 1:1-Beziehung zwischen
|
||||||
|
Problem und Lösung.
|
||||||
|
|
||||||
|
Um sowohl das Finden eines Werkzeugs zu einem gegebenen Problem als auch das
|
||||||
|
Finden einer Beschreibung zu einem gegebenen Werkzeug zu vereinfachen, und um
|
||||||
|
die oben beschriebene n:m-Beziehung abzubilden, werden hier also zunächst
|
||||||
|
typische Aufgaben beschrieben. Diese enthalten 'Links' zu den in Frage
|
||||||
|
kommenden Werkzeugen. Danach gibt es eine alphabetische Aufzählung der
|
||||||
|
wichtigsten Kommandos.
|
||||||
|
|
||||||
|
\section{Nägel...}\label{naegel}
|
||||||
|
|
||||||
|
\subsection{Ein- und Ausgabe}\label{ein_und_ausgabe}
|
||||||
|
|
||||||
Beinahe jedes Skript verwendet in irgendeiner Form die Ein- oder Ausgabe. Sei
|
Beinahe jedes Skript verwendet in irgendeiner Form die Ein- oder Ausgabe. Sei
|
||||||
es in interaktiver Art auf dem Terminal, oder im Hintergrund auf Dateien.
|
es in interaktiver Art auf dem Terminal, oder im Hintergrund auf Dateien.
|
||||||
Einige grundlegende Kommandos in diesem Zusammenhang werden hier vorgestellt.
|
Einige grundlegende Kommandos in diesem Zusammenhang werden hier vorgestellt.
|
||||||
|
|
||||||
\subsection{echo}\label{echo}\index{echo=\texttt{echo}|(textbf}
|
cat
|
||||||
|
echo
|
||||||
Dies ist wohl der grundlegendste Befehl, der in einem Skript verwendet werden
|
head
|
||||||
kann. Er ist die Voraussetzung, um eines der wichtigsten Werkzeuge der
|
printf
|
||||||
Kybernetik auch mittels eines Shell-Skriptes effizient umzusetzen: Hello World.
|
read
|
||||||
:-)
|
tail
|
||||||
|
|
||||||
Die eigentliche Aufgabe dieses Befehls dürfte jedem bekannt sein, der sich bis
|
|
||||||
zu dieser Stelle durchgearbeitet hat. Allerdings wissen viele nicht, daß auch
|
|
||||||
der echo-Befehl über Parameter verfügt. Zumindest zwei davon erweisen sich in
|
|
||||||
der Praxis oft als sehr hilfreich:
|
|
||||||
|
|
||||||
\LTXtable{\textwidth}{tab_kommandos_echo_parameter.tex}
|
|
||||||
|
|
||||||
\index{echo=\texttt{echo}|)}
|
|
||||||
|
|
||||||
|
|
||||||
\subsection{printf}
|
\subsection{Pfade und Dateien}\label{pfade_und_dateien}
|
||||||
|
|
||||||
|
Eine der Hautaufgaben von Shell-Skripten ist natürlich das Hantieren mit
|
||||||
|
Dateien. In diesem Abschnitt geht es allerdings nicht um den Umgang mit
|
||||||
|
Dateiinhalten, sondern vielmehr werden einige nützliche Tools im Umgang mit
|
||||||
|
Dateien an sich vorgestellt.
|
||||||
|
|
||||||
|
basename
|
||||||
|
dirname
|
||||||
|
touch
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{Pipes manipulieren}\label{pipes_manipulieren}\index{Pipe|(textbf}
|
||||||
|
|
||||||
|
Das Konzept der Pipes (Röhren) wird bereits in dem Kapitel über Befehlsformen
|
||||||
|
(\ref{befehlsformen}) vorgestellt. Im wesentlichen besteht es darin, daß Daten
|
||||||
|
von einem Programm an ein anderes weitergeleitet werden. Auf diese Weise
|
||||||
|
entsteht eine sogenannte \textit{Pipeline}\index{Pipeline} aus mehreren
|
||||||
|
Kommandos.
|
||||||
|
|
||||||
|
Einige Kommandos sind für den Einsatz in einem solchen Konstrukt prädestiniert,
|
||||||
|
obwohl die meisten auch alleine eingesetzt werden können. Einige dieser
|
||||||
|
Tools sollen im Folgenden vorgestellt werden.
|
||||||
|
|
||||||
|
grep
|
||||||
|
sed
|
||||||
|
awk
|
||||||
|
sort
|
||||||
|
tee
|
||||||
|
wc
|
||||||
|
\index{Pipe|)}
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{Prozeßmanagement}\label{prozessmanagement}
|
||||||
|
|
||||||
|
TODO!!
|
||||||
|
|
||||||
|
ps
|
||||||
|
pgrep
|
||||||
|
pkill
|
||||||
|
kill
|
||||||
|
|
||||||
|
|
||||||
|
\section{... und Hämmer}\label{haemmer}
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{awk}
|
||||||
|
|
||||||
|
TODO!!
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{basename}\label{basename}\index{basename=\texttt{basename}|(textbf}
|
||||||
|
|
||||||
|
Dem Tool \texttt{basename} wird als Parameter ein Pfad zu einer Datei
|
||||||
|
übergeben. Der in der Angabe enthaltene Pfad wird abgeschnitten, nur der Name
|
||||||
|
der eigentlichen Datei wird zurückgegeben.
|
||||||
|
|
||||||
|
\index{basename=\texttt{basename}|)}
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{bc}
|
||||||
|
|
||||||
TODO!!!
|
TODO!!!
|
||||||
|
|
||||||
@ -80,17 +147,96 @@ werden.
|
|||||||
\index{cat=\texttt{cat}|)}
|
\index{cat=\texttt{cat}|)}
|
||||||
|
|
||||||
|
|
||||||
\subsection{tail}\label{tail}\index{tail=\texttt{tail}|(textbf}
|
\subsection{chpasswd}\label{script}\index{chpasswd=\texttt{chpasswd}|(textbf}
|
||||||
|
|
||||||
Der Befehl \texttt{tail} gibt die letzten zehn Zeilen einer Datei aus. Wenn
|
Mit diesem Kommando bietet sich dem Administrator des Systems die Möglichkeit,
|
||||||
kein Dateiname (oder ein \texttt{-}) angegeben wird, liest \texttt{tail} von
|
scriptgesteuert die Paßwörter für neue Benutzer zu vergeben. Manuell ändert man
|
||||||
der Standard-Eingabe. Man kann die Anzahl der ausgegebenen Zeilen mit dem
|
ein Paßwort mit dem Kommando \texttt{passwd}\index{passwd=\texttt{passwd}},
|
||||||
Parameter \texttt{-l} steuern.
|
allerdings löscht (flusht) dieses Programm die Standard-Eingabe, bevor es das
|
||||||
|
neue Paßwort erwartet. Somit lassen sich Paßwörter mit \texttt{passwd} nur
|
||||||
|
interaktiv ändern\footnote{Es gibt auch einen anderen Weg: Man kann
|
||||||
|
\texttt{passwd} auch mittels \texttt{expect} fernsteuern. Allerdings ist diese
|
||||||
|
Methode weniger elegant.}.
|
||||||
|
|
||||||
Mit dem Parameter \texttt{-f} (follow) gibt \texttt{tail} neue Zeilen aus,
|
Das Kommando wird in der Form
|
||||||
sobald sie an die Datei angehängt werden.
|
|
||||||
|
|
||||||
\index{tail=\texttt{tail}|)}
|
\texttt{echo }\textit{name}\texttt{:}\textit{pass}\texttt{ | chpasswd}
|
||||||
|
|
||||||
|
aufgerufen. Es ist auch möglich, dem Programm eine Datei mit vielen Name /
|
||||||
|
Paßwort-Kombinationen an die Standard-Eingabe zu übergeben:
|
||||||
|
|
||||||
|
\texttt{cat }\textit{passwoerter.txt}\texttt{ | chpasswd}
|
||||||
|
|
||||||
|
Allerdings sollte dabei aus Sicherheitsgründen darauf geachtet werden, daß
|
||||||
|
diese Datei nicht allgemein lesbar ist.
|
||||||
|
|
||||||
|
\index{chpasswd=\texttt{chpasswd}|)}
|
||||||
|
\subsection{dirname}\label{dirname}\index{dirname=\texttt{dirname}|(textbf}
|
||||||
|
|
||||||
|
Analog zu \texttt{basename} gibt \texttt{dirname} nur die Pfad-Komponente einer
|
||||||
|
angegebenen Datei zurück.
|
||||||
|
|
||||||
|
\index{dirname=\texttt{dirname}|)}
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{echo}\label{echo}\index{echo=\texttt{echo}|(textbf}
|
||||||
|
|
||||||
|
Dies ist wohl der grundlegendste Befehl, der in einem Skript verwendet werden
|
||||||
|
kann. Er ist die Voraussetzung, um eines der wichtigsten Werkzeuge der
|
||||||
|
Kybernetik auch mittels eines Shell-Skriptes effizient umzusetzen: Hello World.
|
||||||
|
:-)
|
||||||
|
|
||||||
|
Die eigentliche Aufgabe dieses Befehls dürfte jedem bekannt sein, der sich bis
|
||||||
|
zu dieser Stelle durchgearbeitet hat. Allerdings wissen viele nicht, daß auch
|
||||||
|
der echo-Befehl über Parameter verfügt. Zumindest zwei davon erweisen sich in
|
||||||
|
der Praxis oft als sehr hilfreich:
|
||||||
|
|
||||||
|
\LTXtable{\textwidth}{tab_kommandos_echo_parameter.tex}
|
||||||
|
|
||||||
|
\index{echo=\texttt{echo}|)}
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{expr}
|
||||||
|
|
||||||
|
TODO!!!
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{grep}\label{grep}\index{grep=\texttt{grep}|(textbf}
|
||||||
|
|
||||||
|
Das Tool \texttt{grep} stammt aus dem Standard-Repertoire eines jeden
|
||||||
|
Systemadministrators. Mit seiner Hilfe kann in einer oder mehreren Dateien,
|
||||||
|
oder eben auch in einem Datenstrom nach dem Auftreten bestimmter regulärer
|
||||||
|
Ausdrücke (siehe \ref{mustererkennung}) gesucht werden.
|
||||||
|
|
||||||
|
TODO!!!
|
||||||
|
|
||||||
|
Die folgende Tabelle stellt einige der vielen Parameter vor:
|
||||||
|
|
||||||
|
\LTXtable{\textwidth}{tab_kommandos_grep_parameter.tex}
|
||||||
|
|
||||||
|
Im Zusammenhang mit grep stößt fast jeder Shell-Skripter früher oder später auf
|
||||||
|
das Problem, daß er irgendwas davon abhängig machen will, ob ein bestimmter
|
||||||
|
Prozeß läuft oder nicht. Im Normalfall wird er zuerst folgendes ausprobieren,
|
||||||
|
was aber oft (nicht immer) in die Hose gehen wird:
|
||||||
|
|
||||||
|
\texttt{ps aux | grep }\textit{prozessname}\texttt{ \&\& echo \dq}\textit{läuft
|
||||||
|
schon}\texttt{\dq}
|
||||||
|
|
||||||
|
Der Grund dafür ist, daß unter Umständen in der Ausgabe von \texttt{ps} auch
|
||||||
|
das \texttt{grep}-Kommando samt Parameter (\textit{prozessname}) aufgelistet
|
||||||
|
wird. So findet das \texttt{grep}-Kommando sich quasi selbst.
|
||||||
|
|
||||||
|
Abhilfe schafft das folgende Konstrukt:
|
||||||
|
|
||||||
|
\texttt{ps aux | grep \dq}\textit{[p]rozessname}\texttt{\dq~\&\& echo
|
||||||
|
\dq}\textit{läuft schon}\texttt{\dq}
|
||||||
|
|
||||||
|
Das p ist jetzt als eine Zeichenmenge (regulärer Ausdruck) angegeben worden.
|
||||||
|
Jetzt sucht \texttt{grep} also nach dem String \textit{prozessname}, in der
|
||||||
|
Ausgabe von \texttt{ps} erscheint das \texttt{grep}-Kommando allerdings mit
|
||||||
|
\textit{[p]rozessname} und wird somit ignoriert.
|
||||||
|
|
||||||
|
\index{grep=\texttt{grep}|)}
|
||||||
|
|
||||||
|
|
||||||
\subsection{head}\label{head}\index{head=\texttt{head}|(textbf}
|
\subsection{head}\label{head}\index{head=\texttt{head}|(textbf}
|
||||||
@ -101,6 +247,16 @@ werden allerdings nicht die letzten Zeilen angezeigt, sondern die ersten.
|
|||||||
\index{head=\texttt{head}|)}
|
\index{head=\texttt{head}|)}
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{kill}
|
||||||
|
|
||||||
|
TODO!!!
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{printf}
|
||||||
|
|
||||||
|
TODO!!!
|
||||||
|
|
||||||
|
|
||||||
\subsection{read}\label{read}\index{read=\texttt{read}|(textbf}
|
\subsection{read}\label{read}\index{read=\texttt{read}|(textbf}
|
||||||
|
|
||||||
Mit dem Kommando \texttt{read} kann man Eingaben von der
|
Mit dem Kommando \texttt{read} kann man Eingaben von der
|
||||||
@ -152,28 +308,57 @@ Timeout oder ein EOF auf.
|
|||||||
\index{read=\texttt{read}|)}
|
\index{read=\texttt{read}|)}
|
||||||
|
|
||||||
|
|
||||||
\section{Pfade und Dateien}\label{pfade_und_dateien}
|
\subsection{script}\label{script}\index{script=\texttt{script}|(textbf}
|
||||||
|
|
||||||
Eine der Hautaufgaben von Shell-Skripten ist natürlich das Hantieren mit
|
Dieses Kommando eignet sich vorzüglich für das Debuggen fertiger Skripte. Man
|
||||||
Dateien. In diesem Abschnitt geht es allerdings nicht um den Umgang mit
|
ruft es in Verbindung mit einem Dateinamen auf. Dieser Aufruf startet eine neue
|
||||||
Dateiinhalten, sondern vielmehr werden einige nützliche Tools im Umgang mit
|
Shell, in der man beliebige Kommandos ausführen kann. Wenn man fertig ist,
|
||||||
Dateien an sich vorgestellt.
|
beendet man den script-Befehl durch die Eingabe von \texttt{exit},
|
||||||
|
\texttt{logout} oder Druck der Tastenkombination \Ovalbox{CTRL}+\Ovalbox{d}
|
||||||
|
(EOF).
|
||||||
|
|
||||||
\subsection{basename}\label{basename}\index{basename=\texttt{basename}|(textbf}
|
Script schreibt alle Ein- und Ausgaben die an dem Terminal vorgenommen werden
|
||||||
|
in die angegebene Datei. So kann man auch interaktive Skripte relativ leicht
|
||||||
Dem Tool \texttt{basename} wird als Parameter ein Pfad zu einer Datei
|
debuggen, da sowohl Ein- als auch Ausgaben in dem Logfile sichtbar sind.
|
||||||
übergeben. Der in der Angabe enthaltene Pfad wird abgeschnitten, nur der Name
|
\index{script=\texttt{script}|)}
|
||||||
der eigentlichen Datei wird zurückgegeben.
|
|
||||||
|
|
||||||
\index{basename=\texttt{basename}|)}
|
|
||||||
|
|
||||||
|
|
||||||
\subsection{dirname}\label{dirname}\index{dirname=\texttt{dirname}|(textbf}
|
\subsection{sed}
|
||||||
|
|
||||||
Analog zu \texttt{basename} gibt \texttt{dirname} nur die Pfad-Komponente einer
|
TODO!!!
|
||||||
angegebenen Datei zurück.
|
|
||||||
|
|
||||||
\index{dirname=\texttt{dirname}|)}
|
|
||||||
|
\subsection{seq}
|
||||||
|
|
||||||
|
TODO!!!
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{sleep}
|
||||||
|
|
||||||
|
TODO!!!
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{sort}
|
||||||
|
|
||||||
|
TODO!!!
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{tail}\label{tail}\index{tail=\texttt{tail}|(textbf}
|
||||||
|
|
||||||
|
Der Befehl \texttt{tail} gibt die letzten zehn Zeilen einer Datei aus. Wenn
|
||||||
|
kein Dateiname (oder ein \texttt{-}) angegeben wird, liest \texttt{tail} von
|
||||||
|
der Standard-Eingabe. Man kann die Anzahl der ausgegebenen Zeilen mit dem
|
||||||
|
Parameter \texttt{-l} steuern.
|
||||||
|
|
||||||
|
Mit dem Parameter \texttt{-f} (follow) gibt \texttt{tail} neue Zeilen aus,
|
||||||
|
sobald sie an die Datei angehängt werden.
|
||||||
|
|
||||||
|
\index{tail=\texttt{tail}|)}
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{tee}
|
||||||
|
|
||||||
|
TODO!!!
|
||||||
|
|
||||||
|
|
||||||
\subsection{touch}\label{touch}\index{touch=\texttt{touch}|(textbf}
|
\subsection{touch}\label{touch}\index{touch=\texttt{touch}|(textbf}
|
||||||
@ -195,144 +380,11 @@ Referenzdatei angepa
|
|||||||
\index{touch=\texttt{touch}|)}
|
\index{touch=\texttt{touch}|)}
|
||||||
|
|
||||||
|
|
||||||
\section{Pipes manipulieren}\label{pipes_manipulieren}\index{Pipe|(textbf}
|
|
||||||
|
|
||||||
Das Konzept der Pipes (Röhren) wird bereits in dem Kapitel über Befehlsformen
|
|
||||||
(\ref{befehlsformen}) vorgestellt. Im wesentlichen besteht es darin, daß Daten
|
|
||||||
von einem Programm an ein anderes weitergeleitet werden. Auf diese Weise
|
|
||||||
entsteht eine sogenannte \textit{Pipeline}\index{Pipeline} aus mehreren
|
|
||||||
Kommandos.
|
|
||||||
|
|
||||||
Einige Kommandos sind für den Einsatz in einem solchen Konstrukt prädestiniert,
|
|
||||||
obwohl die meisten auch alleine eingesetzt werden können. Einige dieser
|
|
||||||
Tools sollen im Folgenden vorgestellt werden.
|
|
||||||
|
|
||||||
\subsection{grep}\label{grep}\index{grep=\texttt{grep}|(textbf}
|
|
||||||
|
|
||||||
Das Tool \texttt{grep} stammt aus dem Standard-Repertoire eines jeden
|
|
||||||
Systemadministrators. Mit seiner Hilfe kann in einer oder mehreren Dateien,
|
|
||||||
oder eben auch in einem Datenstrom nach dem Auftreten bestimmter regulärer
|
|
||||||
Ausdrücke (siehe \ref{mustererkennung}) gesucht werden.
|
|
||||||
|
|
||||||
TODO!!!
|
|
||||||
|
|
||||||
Die folgende Tabelle stellt einige der vielen Parameter vor:
|
|
||||||
|
|
||||||
\LTXtable{\textwidth}{tab_kommandos_grep_parameter.tex}
|
|
||||||
|
|
||||||
Im Zusammenhang mit grep stößt fast jeder Shell-Skripter früher oder später auf
|
|
||||||
das Problem, daß er irgendwas davon abhängig machen will, ob ein bestimmter
|
|
||||||
Prozeß läuft oder nicht. Im Normalfall wird er zuerst folgendes ausprobieren,
|
|
||||||
was aber oft (nicht immer) in die Hose gehen wird:
|
|
||||||
|
|
||||||
\texttt{ps aux | grep }\textit{prozessname}\texttt{ \&\& echo \dq}\textit{läuft
|
|
||||||
schon}\texttt{\dq}
|
|
||||||
|
|
||||||
Der Grund dafür ist, daß unter Umständen in der Ausgabe von \texttt{ps} auch
|
|
||||||
das \texttt{grep}-Kommando samt Parameter (\textit{prozessname}) aufgelistet
|
|
||||||
wird. So findet das \texttt{grep}-Kommando sich quasi selbst.
|
|
||||||
|
|
||||||
Abhilfe schafft das folgende Konstrukt:
|
|
||||||
|
|
||||||
\texttt{ps aux | grep \dq}\textit{[p]rozessname}\texttt{\dq~\&\& echo
|
|
||||||
\dq}\textit{läuft schon}\texttt{\dq}
|
|
||||||
|
|
||||||
Das p ist jetzt als eine Zeichenmenge (regulärer Ausdruck) angegeben worden.
|
|
||||||
Jetzt sucht \texttt{grep} also nach dem String \textit{prozessname}, in der
|
|
||||||
Ausgabe von \texttt{ps} erscheint das \texttt{grep}-Kommando allerdings mit
|
|
||||||
\textit{[p]rozessname} und wird somit ignoriert.
|
|
||||||
|
|
||||||
\index{grep=\texttt{grep}|)}
|
|
||||||
|
|
||||||
|
|
||||||
\subsection{sed}
|
|
||||||
|
|
||||||
TODO!!!
|
|
||||||
|
|
||||||
|
|
||||||
\subsection{awk}
|
|
||||||
|
|
||||||
TODO!!
|
|
||||||
|
|
||||||
\subsection{sort}
|
|
||||||
|
|
||||||
TODO!!!
|
|
||||||
|
|
||||||
\subsection{tee}
|
|
||||||
|
|
||||||
TODO!!!
|
|
||||||
|
|
||||||
\subsection{wc}
|
\subsection{wc}
|
||||||
|
|
||||||
TODO!!!
|
TODO!!!
|
||||||
|
|
||||||
\index{Pipe|)}
|
|
||||||
|
|
||||||
|
|
||||||
\section{Sonstige Befehle}\label{sonstige_befehle}
|
|
||||||
|
|
||||||
Eine Reihe weiterer Befehle könnte in verschiedenen Lagen hilfreich sein.
|
|
||||||
Einige davon werden im Folgenden in loser Folge vorgestellt.
|
|
||||||
|
|
||||||
\subsection{script}\label{script}\index{script=\texttt{script}|(textbf}
|
|
||||||
|
|
||||||
Dieses Kommando eignet sich vorzüglich für das Debuggen fertiger Skripte. Man
|
|
||||||
ruft es in Verbindung mit einem Dateinamen auf. Dieser Aufruf startet eine neue
|
|
||||||
Shell, in der man beliebige Kommandos ausführen kann. Wenn man fertig ist,
|
|
||||||
beendet man den script-Befehl durch die Eingabe von \texttt{exit},
|
|
||||||
\texttt{logout} oder Druck der Tastenkombination \Ovalbox{CTRL}+\Ovalbox{d}
|
|
||||||
(EOF).
|
|
||||||
|
|
||||||
Script schreibt alle Ein- und Ausgaben die an dem Terminal vorgenommen werden
|
|
||||||
in die angegebene Datei. So kann man auch interaktive Skripte relativ leicht
|
|
||||||
debuggen, da sowohl Ein- als auch Ausgaben in dem Logfile sichtbar sind.
|
|
||||||
\index{script=\texttt{script}|)}
|
|
||||||
|
|
||||||
\subsection{seq}
|
|
||||||
|
|
||||||
TODO!!!
|
|
||||||
|
|
||||||
\subsection{expr}
|
|
||||||
|
|
||||||
TODO!!!
|
|
||||||
|
|
||||||
\subsection{bc}
|
|
||||||
|
|
||||||
TODO!!!
|
|
||||||
|
|
||||||
\subsection{kill}
|
|
||||||
|
|
||||||
TODO!!!
|
|
||||||
|
|
||||||
\subsection{sleep}
|
|
||||||
|
|
||||||
TODO!!!
|
|
||||||
|
|
||||||
\subsection{who}
|
\subsection{who}
|
||||||
|
|
||||||
TODO!!!
|
TODO!!!
|
||||||
|
|
||||||
\subsection{chpasswd}\label{script}\index{chpasswd=\texttt{chpasswd}|(textbf}
|
|
||||||
|
|
||||||
Mit diesem Kommando bietet sich dem Administrator des Systems die Möglichkeit,
|
|
||||||
scriptgesteuert die Paßwörter für neue Benutzer zu vergeben. Manuell ändert man
|
|
||||||
ein Paßwort mit dem Kommando \texttt{passwd}\index{passwd=\texttt{passwd}},
|
|
||||||
allerdings löscht (flusht) dieses Programm die Standard-Eingabe, bevor es das
|
|
||||||
neue Paßwort erwartet. Somit lassen sich Paßwörter mit \texttt{passwd} nur
|
|
||||||
interaktiv ändern\footnote{Es gibt auch einen anderen Weg: Man kann
|
|
||||||
\texttt{passwd} auch mittels \texttt{expect} fernsteuern. Allerdings ist diese
|
|
||||||
Methode weniger elegant.}.
|
|
||||||
|
|
||||||
Das Kommando wird in der Form
|
|
||||||
|
|
||||||
\texttt{echo }\textit{name}\texttt{:}\textit{pass}\texttt{ | chpasswd}
|
|
||||||
|
|
||||||
aufgerufen. Es ist auch möglich, dem Programm eine Datei mit vielen Name /
|
|
||||||
Paßwort-Kombinationen an die Standard-Eingabe zu übergeben:
|
|
||||||
|
|
||||||
\texttt{cat }\textit{passwoerter.txt}\texttt{ | chpasswd}
|
|
||||||
|
|
||||||
Allerdings sollte dabei aus Sicherheitsgründen darauf geachtet werden, daß
|
|
||||||
diese Datei nicht allgemein lesbar ist.
|
|
||||||
|
|
||||||
\index{chpasswd=\texttt{chpasswd}|)}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user