<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>[pimp my shell] &#187; Jeremy</title>
	<atom:link href="http://blog.pimpmyshell.de/author/jxn/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.pimpmyshell.de</link>
	<description>leben im text-modus</description>
	<lastBuildDate>Thu, 26 Aug 2010 18:04:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Pimp your (Bash) Prompt</title>
		<link>http://blog.pimpmyshell.de/2007/12/10/pimp-your-prompt/</link>
		<comments>http://blog.pimpmyshell.de/2007/12/10/pimp-your-prompt/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 22:17:00 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[how-tos]]></category>
		<category><![CDATA[shells]]></category>

		<guid isPermaLink="false">http://blog.pimpmyshell.de/2007/12/10/pimp-your-prompt/</guid>
		<description><![CDATA[Du bist gelangweilt von dem hans@wurst:~$ &#8211; Prompt deiner Bash? Möchtest gerne mehr Informationen gezeigt bekommen? Du hättest gerne Augenschmerzen vor lauter Farben? In folgendem Artikel werde ich erklären, wie du Deinen Prompt personalisieren, einfärben, und visuell vollkommen verunstalten kannst. (Kleiner Hinweis vorweg: Der eine oder andere mag es bereits bemerkt haben, ich beziehe mich [...]]]></description>
			<content:encoded><![CDATA[<p>Du bist gelangweilt von dem <em>hans@wurst:~$</em> &#8211; Prompt deiner Bash? Möchtest gerne mehr Informationen gezeigt bekommen? Du hättest gerne Augenschmerzen vor lauter Farben?</p>
<p>In folgendem Artikel werde ich erklären, wie du</p>
<ul>
<li>Deinen Prompt personalisieren,</li>
<li>einfärben,</li>
<li>und visuell vollkommen verunstalten kannst.</li>
</ul>
<p><span id="more-96"></span><br />
<small>(Kleiner Hinweis vorweg: Der eine oder andere mag es bereits bemerkt haben, ich beziehe mich im ganzen Artikel ausschliesslich auf die <acronym title="Bourne again Shell">Bash</acronym>.  Selbstverständlich lassen sich die meisten anderen Shells ebenfalls über ihre Variablen individualisieren. Das soll keinerlei Wertung sein, ich habe einfach keine Zeit, mich mit anderen Shells wie der <em>zsh</em> zu beschäftigen. Sollte also jemand von euch Zeit und Lust haben einen Artikel dazu loszuwerden, lade ich ihn hiermit herzlich ein. :) )</small></p>
<h3>Grundlagen</h3>
<p>In der <acronym title="Bourne again Shell">Bash</acronym> wird der primäre Prompt über die Variable <strong>PS1</strong> gesteuert. Neben PS1 existieren noch PS2, PS3 und PS4, wobei für uns nur die ersten Beiden interessant sind.</p>
<ul>
<li><strong>PS1</strong> &#8211; In dieser Variable wird der primäre Prompt der <acronym title="Bourne again Shell">Bash</acronym> gespeichert. Der Standardwert ist in dem meisten Linuxdistributionen <em>\u@\h:\w\$</em>.</li>
<li><strong>PS2</strong> &#8211; Der sekundäre Prompt. Dieser Prompt wird ausgegeben, wenn auf eine Eingabe des Users gewartet wird. Der Standardwert ist <em>&gt;</em>. Der sekundäre Prompt lässt sich beispielsweise mit einem unvollendeten Befehl wie &#8220;ls |&#8221; ausgeben.</li>
<li><strong>PS3</strong> &#8211;  wird vom internen select Befehl verwendet.</li>
<li><strong>PS4</strong> &#8211; Die Variable &#8220;PS4&#8243; wird vor den Debug-Meldungen ausgegeben, die durch die Shell-Option &#8220;-x&#8221; [execute trace] ausgegeben werden. Der Standardwert ist hier meist <em>+</em>.</li>
</ul>
<p><strong>Die Veränderungen treten sofort ein, bleiben jedoch erst dann erhalten, wenn der &#8220;export&#8221;-Befehl in die Datei <em>~/.bashrc</em> eingetragen wird.</strong></p>
<p>Zunächst löschen wir einfach mal den Inhalt von PS1:</p>
<pre><code>unset $PS1</code></pre>
<p>Nun fehlt jegliche Eingabeaufforderung. Das bedeutet natürlich nicht, dass keine Befehle mehr eingegeben werden können. Es gibt einfach keinen Prompt mehr, der ausgegeben werden könnte.</p>
<p>Mit <kbd>export</kbd> können Umgebungsvariablen gesetzt werden. Ein schnelles:</p>
<pre><code>export $PS1="pimp my shell &gt;"</code></pre>
<p>zum Beispiel erzeugt folgenden sinnlosen aber witzigen Prompt:</p>
<pre><code>pimp my shell &gt;</code></pre>
<p>Aber wie lasse ich mir Informationen statt nur einfachen Text <del>prompten</del> <ins>ausgeben</ins>? Über so genannte Escape-Sequenzen. Nun wird es interessant. Es gibt einen ganzen Haufen Escape-Sequenzen, welche etwa Arbeitsverzeichnis, Benutzername oder Uhrzeit ausgeben:</p>
<table width="100%">
<tr>
<td><strong>\a</strong></td>
<td>Das ASCII-Zeichen für eine Glocke (&#8220;\007&#8243; sollte auch funktionieren). Dies erzeugt einen Ton, welcher (falls vorhanden) aus dem PC-Speaker tönt. Das ist aber nicht zu empfehlen, da dieser dann bei jedem ausgegebenen Prompt mit dieser Escape-Sequenz der Speaker einen nervigen Ton von sich gibt.</td>
</tr>
<tr>
<td><strong>\d</strong></td>
<td>Zeigt das Datum im &#8220;Wochentag Monat Datum&#8221;-Format (<abbr title="Beispielsweise">Bspw.</abbr> &#8220;Tue May 26&#8243;)</td>
</tr>
<tr>
<td><strong>\D{format}</strong></td>
<td>Der Inhalt der beiden geschweiften Klammern wird an <a href="http://opengroup.org/onlinepubs/007908799/xsh/strftime.html">strftime</a> gesendet und das Ergebnis zurück in den Prompt-String. Leer gelassen erzeugt das meist ein locale-Spezifisches Datum. Die geschweiften Klammern sind pflicht.</td>
</tr>
<tr>
<td><strong>\e</strong></td>
<td>Ein ASCII Escape-Zeichen (&#8220;\033&#8243; sollte auch funktionieren.)</td>
</tr>
<tr>
<td><strong>\h</strong></td>
<td>Der Hostname bis zum ersten &#8220;.&#8221;</td>
</tr>
<tr>
<td><strong>\H</strong></td>
<td>Der komplette Hostname</td>
</tr>
<tr>
<td><strong>\j</strong></td>
<td>Gibt die Anzahl der Hintergrundprozesse aus.</td>
</tr>
<tr>
<td><strong>\l</strong></td>
<td>Name der Shell</td>
</tr>
<tr>
<td><strong>\n</strong></td>
<td>Erzeugt eine neue Zeile (Ja, Prompts können mehrzeilig sein).</td>
</tr>
<tr>
<td><strong>\r</strong></td>
<td><a href="http://en.wikipedia.org/wiki/Carriage_return" title="Link zum englischen Wikipedia-Artikel">Carriage-Return</a></td>
</tr>
<tr>
<td><strong>\s</strong></td>
<td>Der Name der Shell. Logischerweise <em><acronym title="Bourne again Shell">Bash</acronym></em></td>
</tr>
<tr>
<td><strong>\t</strong></td>
<td>Die Zeit im 24-Stunden <em>HH:MM:SS</em> Format</td>
</tr>
<tr>
<td><strong>\T</strong></td>
<td>Die Zeit im 12-Stunden <em>HH:MM:SS</em> Format</td>
</tr>
<tr>
<td><strong>\@</strong></td>
<td>Die Zeit im 12-Stunden <em>AM/PM</em> Format</td>
</tr>
<tr>
<td><strong>\A</strong></td>
<td>Die Zeit im 24-Stunden <em>HH:MM</em> Format</td>
</tr>
<tr>
<td><strong>\u</strong></td>
<td>Name des Benutzers</td>
</tr>
<tr>
<td><strong>\v</strong></td>
<td>Versionsnummer der <acronym title="Bourne again Shell">Bash</acronym> (<abbr title="Beispielsweise">Bspw.</abbr> 3.2)</td>
</tr>
<tr>
<td><strong>\V</strong></td>
<td>Wie /v, jedoch mit Patch-Level (<abbr title="Beispielsweise">Bspw.</abbr> 3.2.25)</td>
</tr>
<tr>
<td><strong>\w</strong></td>
<td>Das aktuelle Arbeitsverzeichnis, wobei $HOME mit einer Tilde (~) abgekürzt wird.</td>
</tr>
<tr>
<td><strong>\W</strong></td>
<td>Das aktuelle Arbeitsverzeichnis (, jedoch ohne höhere Ebenen), wobei $HOME mit einer Tilde (~) abgekürzt wird.</td>
</tr>
<tr>
<td><strong>\!</strong></td>
<td>Die History-Nummer des Befehls. Dies kann natürlich je nach <em>.bash_history</em> variieren.</td>
</tr>
<tr>
<td><strong>\#</strong></td>
<td>Anzahl der bereits aufgerufenen Kommandos während der Shell-Session</td>
</tr>
<tr>
<td><strong>\$</strong></td>
<td>Wenn <acronym title="User IDentification Number">UID</acronym> = 0, ein #, andernfalls ein $. Zu deutsch: Normale User sehen ein &#8220;$&#8221;, Root ein &#8220;#&#8221;.</td>
</tr>
<tr>
<td><strong>\nnn</strong></td>
<td>Zeichen entsprechend der oktalen Zahl <em>nnn</em></td>
</tr>
<tr>
<td><strong>\\</strong></td>
<td>Ein Backslash</td>
</tr>
<tr>
<td><strong>\[</strong></td>
<td>Beginn einer Sequenz von nicht-darstellbaren Zeichen.</td>
</tr>
<tr>
<td><strong>\]</strong></td>
<td>Ende einer Sequenz von nicht-darstellbaren Zeichen</td>
</tr>
</table>
<p>Damit lässt sich schon viel anstellen. Sinnvoll sind und bleiben natürlich Benutzername, Verzeichnis und Hostname. Nach ein wenig herumspielen könnte der Inhalt von <strong>PS1</strong> zum Beispiel so aussehen:</p>
<pre><code>[&#92;d &#92;A, Bash Version &#92;V, &#92;# Commands, &#92;j Jobs, tty #&#92;l]&#92;n[&#92;u@&#92;H:&#92;w] &#92;$</code></pre>
<p>, was bei mir in etwa folgenden Prompt erzeugt:</p>
<pre><code>[Mo Dez 10 23:05, Bash Version 3.2.25, 116 Commands, 0 Jobs, tty #2]
[jxn@david:~] $</code></pre>
<p>Die eckigen Klammern sind übrigens reine Kosmetik ;)</p>
<h3>Farben</h3>
<div style="float:right;">
<table>
<tr>
<td><strong>Farbe</strong></td>
<td><strong><acronym title="Vordergrund">VG</acronym> / <acronym title="Hintergrund">HG</acronym></strong></td>
</tr>
<tr>
<td>Schwarz</td>
<td>30 / 40</td>
</tr>
<tr>
<td>Rot</td>
<td>31 / 41</td>
</tr>
<tr>
<td>Grün</td>
<td>32 / 42</td>
</tr>
<tr>
<td>Braun</td>
<td>33 / 43</td>
</tr>
<tr>
<td>Blau</td>
<td>34 / 44</td>
</tr>
<tr>
<td>Violett</td>
<td>35 / 45</td>
</tr>
<tr>
<td>Cyan</td>
<td>36 / 46</td>
</tr>
<tr>
<td>Weiss</td>
<td>37 / 47</td>
</table>
</div>
<p>Zufrieden mit der Ausgabe? Weiter gehts mit optischer hervorhebung durch Farben.</p>
<p>Farbangaben müssen über die Escape-Sequenz <strong>\e</strong> (/033 sollte auch funktionieren) eingeleitet werden. Diese Escape-Sequenz wird jedoch vom genutzten Terminal verarbeitet, nicht von der <acronym title="Bourne again Shell">Bash</acronym>. Deswegen funktioniert die Einfärbung von Prompts auch nicht überall, selbst wenn die <acronym title="Bourne again Shell">Bash</acronym> genutzt wird.</p>
<p>Eine Farbangabe besteht aus dem Escape-Zeichen &#8220;\e&#8221;, den Farbcodes &#8220;x;yy;zz&#8221; (Eigenschaft;Vordergrund;Hintergrund) und einem abschliessendem &#8220;m&#8221;. Beispiele für Farbcodes können der nebenstehenden Tabelle entnommen werden, wobei die 30er für die Vordergrund- und die 40er für die Hintergrundfarben stehen. Sinnvolle Werte für die Schrifteigenschaft (x) sind: 0 (Standard), 1 (heller), 22 (nicht heller), 4 (unterstrichen), 24 (nicht unterstrichen), 5 (blinkend), 25 (nicht blinkend), 7 (invers), 27 (nicht invers).</p>
<p>Die Codes in der Farbangabe können übrigens in beliebiger Reihenfolge gesetzt werden. Ein &#8220;5;41;32&#8243; ergibt <abbr title="Beispielsweise">Bspw.</abbr> das Gleiche wie ein &#8220;41;5;32&#8243;, das Entscheidende ist der Code, nicht die Reihenfolge.</p>
<p>Färben wir einfach mal den oben erwähnten Standardprompt &#8220;\u@\h:\w\$&#8221; hellgrün mit einem rotem Hintergrund:</p>
<pre><code>export PS1="&#92;e[1;32;41m&#92;u@&#92;h:&#92;w&#92;$ "</code></pre>
<p>Das Problem: Nun ist nicht nur der Prompt hellgrün, sondern der gesamte Text in unserer Shell. Das lässt sich mit einem schliessenden "\e[0m" verhindern. Auf diese Weise wird die Farbangabe auf Null zürückgesetzt. Ein</p>
<pre><code>export PS1="&#92;e[1;32;41m&#92;u@&#92;h:&#92;w&#92;$&#92;e[0m "</code></pre>
<p>sieht schon gleich viel besser aus. Aber das reicht leider immer noch nicht. Die sowieso nicht darstellbaren Zeichen unserer Farbangaben müssen mit den Sequenzen "\[" und "\]" auch als solche gekennzeichnet werden. Sonst gibt es hässliche Darstellungsfehler, sollte ein Kommando einmal das rechte Ende des sichtbaren Bereichs erreichen. Das Ergebnis sollte also wie folgt aussehen:</p>
<pre><code>export PS1="&#92;[&#92;e[1;32;41m&#92;u@&#92;h:&#92;w&#92;$&#92;e[0m&#92;] "</code></pre>
<p>Natürlich können in einem Prompt auch mehrere Farbangaben verwendet werden. Aber jeder sollte für sich entscheiden, wieviel <em>Bunt</em> seine Augen ertragen können. ;)</p>
<h3>Noch nicht genug? Bashish rocks your socks!</h3>
<p><a href="http://bashish.sourceforge.net/">Bashish</a> ist eine Theme-Engine für allerlei Terminals und Shells. Mit Bashish lassen sich Farbe, Schriftart, Transparenz und Hintergrundbild für einzelne Programme unabhängig voneinander personalisieren. Ausserdem kann man mit Bashish die Prompts verbreiteter Shells wie die Bash, zsh und tcsh konfigurieren. Was mit Bashish möglich ist, wird bei <a href="http://bashish.sourceforge.net/screenshot.html">den Screenshots</a> sehr gut veranschaulicht.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2007/12/10/pimp-your-prompt/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>.bash_history für mehrere Shells</title>
		<link>http://blog.pimpmyshell.de/2007/12/03/bash-history-fuer-mehrere-shells/</link>
		<comments>http://blog.pimpmyshell.de/2007/12/03/bash-history-fuer-mehrere-shells/#comments</comments>
		<pubDate>Mon, 03 Dec 2007 21:58:32 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[how-tos]]></category>

		<guid isPermaLink="false">http://blog.pimpmyshell.de/2007/12/03/bash-history-fuer-mehrere-shells/</guid>
		<description><![CDATA[Du kennst das. Du hast ein Terminal geöffnet und tippst fleißig deine Befehle ein, öffnest ein zweites Terminal und &#8211; es erinnert sich nicht an die gerade eben eingetippten Kommandos. Und es kommt sogar noch schlimmer: Wenn du zuerst das erste Terminal und danach das Zweite schließt, werden die Befehle des ersten Terminals aus der [...]]]></description>
			<content:encoded><![CDATA[<p>Du kennst das. Du hast ein Terminal geöffnet und tippst fleißig deine Befehle ein, öffnest ein zweites Terminal und &#8211; es erinnert sich nicht an die gerade eben eingetippten Kommandos. Und es kommt sogar noch schlimmer: Wenn du zuerst das erste Terminal und danach das Zweite schließt, werden die Befehle des ersten Terminals aus der Datei <em>~/.bash_history</em> überschrieben. Doppelt nervig.<br />
<span id="more-113"></span><br />
Die Bash speichert die <em>.bash_history</em> nur beim schließen eines Terminals, und nicht nach jedem eingetippten Kommando. Das lässt sich leicht ändern:</p>
<pre><code>nano ~/.bashrc</code></pre>
<p>(An Ubuntuuser: Man beachte, kein sudo hier. Die Datei gehört dem User, nicht dem System. Und selbstverständlich lässt sich auch jeder andere Texteditor wie gedit, kate, vi oder emacs nehmen.)</p>
<p>Füge nun die folgenden Zeilen hinzu:</p>
<pre><code>shopt -s histappend
PROMPT_COMMAND='history -a'</code></pre>
<p>und speichere das ganze ab (In Nano mit <kbd>Strg+O</kbd>. &#8220;^&#8221; steht in den meisten Fällen für <kbd>Strg</kbd>. Also macht die Statuszeile in Nano doch ein wenig Sinn. ;) )</p>
<p>Dies sorgt dafür, dass der Kommandoverlauf von der Bash <strong>angehängt</strong> (und nicht einfach überschrieben) wird. Ausserdem wird jedes mal, wenn ein Prompt ausgegeben wird, abgespeichert.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2007/12/03/bash-history-fuer-mehrere-shells/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>nützliche Netcat Tricks</title>
		<link>http://blog.pimpmyshell.de/2007/08/08/nuetzliche-netcat-tricks/</link>
		<comments>http://blog.pimpmyshell.de/2007/08/08/nuetzliche-netcat-tricks/#comments</comments>
		<pubDate>Wed, 08 Aug 2007 21:29:45 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[tutorials]]></category>
<category>nc</category><category>netcat</category><category>tricks</category>
		<guid isPermaLink="false">http://blog.pimpmyshell.de/2007/08/08/nuetzliche-netcat-tricks/</guid>
		<description><![CDATA[Ich liebe die kleinen aber feinen (Unix-)Programme, die zwar nur einen Zweck erfüllen, diesen aber dafür ganz vorzüglich. Nehmen wir beispielsweise das Schweizer Armeemesser der Netzwerktools: netcat. Eine kleine Binärdatei, etwa 60 KB groß, je nach dem wo und wie sie kompiliert wurde. Was kann netcat? Nun, ich schätze die passendere Frage würde lauten: Was [...]]]></description>
			<content:encoded><![CDATA[<p>Ich liebe die kleinen aber feinen (Unix-)Programme, die zwar nur einen Zweck erfüllen, diesen aber dafür ganz vorzüglich. Nehmen wir beispielsweise das Schweizer Armeemesser der Netzwerktools: <strong>netcat</strong>. Eine kleine Binärdatei, etwa 60 KB groß, je nach dem <em>wo</em> und <em>wie</em> sie kompiliert wurde. Was kann netcat?</p>
<p>Nun, ich schätze die passendere Frage würde lauten: Was kann netcat <strong>nicht</strong>?<br />
<span id="more-111"></span></p>
<h3>Ports Scannen</h3>
<p>Netcat kann als Portscanner fungieren. Natürlich reicht es nicht an (beispielsweise) nmap heran, aber wenn du schnell sehen willst, welche Ports auf einem Rechner offen sind, führe folgenden Befehl aus:</p>
<p><code>nc -v -w 1 localhost -z 1-2000</code></p>
<p>, was alle offenen Ports zwischen 1 und 2000 auf localhost ausgibt.</p>
<h3>Dateien übertragen</h3>
<p>Du möchtest eine große, komprimierte Datei von Rechner A nach Rechner B schicken, hast aber weder FTP, noch E-Mail oder Instant Messenger sei es wegen Dateigröße oder irgendwelcher fehlenden Rechten zur verfügung? Verschicke die Datei doch mit netcat: </p>
<p>Zuerst muss mit netcat auf Rechner B ein Port geöffnet werden, wobei im folgenden 1234 der zu öffnende Port ist und datei.tar die zu speichernde Datei ist:</p>
<p><code>nc -lp 1234 &gt; datei.tar</code></p>
<p>Die IP von Rechner B ist beispielsweise 192.168.0.100. Gehen wir zu Rechner A und geben folgendes ein:</p>
<p><code>nc -w 1 192.168.0.100 1234 &lt; datei.tar</code></p>
<p>Fertig. Die Datei wird auf magische Weise über das Netzwerk übertragen.</p>
<h3>Chatten</h3>
<p>Schon einmal einen improvisierten Chat, von einem Rechner auf einen anderen benötigt? Auch das kann netcat.</p>
<p>Wir befehlen Netcat, auf Port 1234 zu &#8220;lauschen&#8221;:</p>
<p><code>nc -lp 1234</code></p>
<p>Dann einfach von einem anderen Rechner auf den Port verbinden: </p>
<p><code>nc 192.168.0.100 1234</code></p>
<p>Fange auf einem der beiden Rechnern an zu tippen. Sobald du <kbd>ENTER</kbd> drückst, wird die Zeile auf dem anderem sichtbar.</p>
<h3>Telnet Server</h3>
<p>Mit netcat lässt sich sogar innerhalb weniger Sekunden (so verrückt es auch klingen mag) ein Telnet Server aufsetzen. Die Shell (oder welche ausführbare Datei auch immer) lässt sich mit dem Parameter -e festlegen:</p>
<p><code>nc -lp 1234 -e /bin/bash</code></p>
<p>Das funktioniert sogar unter Windows:</p>
<p><code>nc -lp 1234 -e cmd.exe</code></p>
<p>Dann muss der Klient nur noch auf Port 1234 verbinden und hat vollzugriff auf eine Shell, zusammen mit dem Rechten des Benutzers der <strong>nc</strong> gestartet hat.</p>
<h3>HTTP Header simulieren</h3>
<p>Nützlich, um ein Paar zugriffe zu erzeugen, die leicht in den Logs zu erkennen sind. Der Header selbst muss natürlich manuell eingegeben werden:</p>
<p><code>nc pimpmyshell.de 80<br />
GET / HTTP/1.1<br />
Host pimpmyshell.de<br />
User-Agent: netcat<br />
Referrer: google.com</code></p>
<p>Die Anfrage wird erst nach einer Leerzeile abgeschickt. Es reicht also, zwei mal <kbd>RETURN</kbd> zu drücken. Dann sollte eine Antwort aus Headern und HTML erscheinen:</p>
<p><code>HTTP/1.1 200 OK<br />
Date: Wed, 08 Aug 2007 20:30:43 GMT<br />
Server: Apache<br />
Last-Modified: Fri, 01 Dec 2006 15:02:06 GMT<br />
ETag: "3dd0d1-9ad-4238c48865780"<br />
Accept-Ranges: bytes<br />
Content-Length: 2477<br />
Content-Type: text/html; charset=ISO-8859-1<br />
Content-Language: de</code><br />
<small>(Abgeschnitten, da HTML nicht nötig)</small></p>
<h3>Web Server</h3>
<p>Das ist sicher einer der coolsten Tricks. Damit lässt sich auf die schnelle (ein <em>wirklich simpler</em>) Webserver aufsetzen. Beispielsweise um den Benutzern einen kleinen Hinweis zu geben, wenn der eigentliche Webserver gerade nicht verfügbar ist. Schliesslich ist alles besser als <q>Keine Antwort von Server&#8230;</q></p>
<p><code>while true; do nc -l -p 80 -q 1 < error.html; done</code></p>
<p>Schützt den versierten Admin garantiert vor Morddrohungen per Telefon. *g*</p>
<h3>Systeme Klonen</h3>
<p>Ok, das ist mein absoluter Lieblingtrick. Auf dem System, das ich klonen will führe ich Folgendes aus:</p>
<p><code>dd if=/dev/sda | nc 192.168.0.100 1234</code></p>
<p>Und das hier auf dem Empfängersystem:</p>
<p><code>nc -l -p 1234 | dd of=/dev/sda</code></p>
<p>Natürlich müssen beide Systeme mit einer Live CD gebootet sein und zugriff auf das Netzwerk sowie netcat erhalten (Knoppix rockt!). </p>
<h3>Fazit</h3>
<p>Obwohl netcat zu all dem fähig ist, bleibt es der Unix Philosophie - <a href="http://en.wikipedia.org/wiki/Unix_philosophy">do one thing and do it well</a> - treu. Netcat wurde nur zu einem einzigen Zweck entwickelt: Datenpakete über Netzwerkverbindungen lesen und schreiben. Und weil es nur das kann, kann es auf so unglaublich vielfältige Weise eingesetzt werden. Es ist ironisch, aber in den meisten Fällen bedeuten mehr Funktionen nur eine noch stärkere Spezialisierung.</p>
<p>Ich habe gehört, dass netcat's fork <a href="http://www.dest-unreach.org/socat/">socat</a> noch mächtiger als sein und mehr Funktionen bieten soll. Ich bin aber noch nicht dazu gekommen, damit zu spielen.</p>
<p>Ebenso muss ich anmerken, dass fast alle der Tricks nur noch halb so lustig sind, wenn sie über das Internet genutzt werden, da - anders als bei ssh - die komplette Datenübertragung im Klartext stattfindet. Dafür gibt es <a href="http://sourceforge.net/projects/cryptcat/">cryptcat</a>, was ich aber ehrlich gesagt auch noch nicht getestet habe.</p>
<p>Und wenn ihr noch ein paar weitere coole Tricks für netcat kennt, schreibt sie in die Kommentare! Man lernt nie aus.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2007/08/08/nuetzliche-netcat-tricks/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>CLI-Apps.org</title>
		<link>http://blog.pimpmyshell.de/2007/07/26/cli-appsorg/</link>
		<comments>http://blog.pimpmyshell.de/2007/07/26/cli-appsorg/#comments</comments>
		<pubDate>Thu, 26 Jul 2007 17:03:13 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[webseiten]]></category>

		<guid isPermaLink="false">http://blog.pimpmyshell.de/2007/07/26/cli-appsorg/</guid>
		<description><![CDATA[Vorgestern ging die Website openDesktop.org online, um einen Rahmen für KDE-Look, KDE-Apps, GNOME-Look und den ganzen Rest zu schaffen. Und um das ganze abzurunden gibt es nun auch eine Website für Kommandozeilenprogramme: CLI-Apps.org. Die Seite ist zwar noch sehr jung, aber dort finden sich bereits einige Programme für den Textmodus. Ein Besuch (und/oder ein Lesezeichen) [...]]]></description>
			<content:encoded><![CDATA[<p>Vorgestern <a href="http://www.cli-apps.org/news/index.php/openDesktop.org+launched?id=257&#038;name=openDesktop.org+launched">ging die Website openDesktop.org online</a>, um einen Rahmen für KDE-Look, KDE-Apps, GNOME-Look und den ganzen Rest zu schaffen.</p>
<p>Und um das ganze abzurunden gibt es nun auch eine Website für Kommandozeilenprogramme: <a href="http://www.cli-apps.org/">CLI-Apps.org</a>.</p>
<p>Die Seite ist zwar noch sehr jung, aber dort finden sich bereits einige Programme für den Textmodus.</p>
<p>Ein Besuch (und/oder ein Lesezeichen) lohnt sich also. :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2007/07/26/cli-appsorg/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Spaß in ASCII-Art: cowsay und FIGlet</title>
		<link>http://blog.pimpmyshell.de/2007/07/14/spass-in-ascii-art-cowsay-und-figlet/</link>
		<comments>http://blog.pimpmyshell.de/2007/07/14/spass-in-ascii-art-cowsay-und-figlet/#comments</comments>
		<pubDate>Sat, 14 Jul 2007 18:23:34 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[fun]]></category>
		<category><![CDATA[programme]]></category>
<category>ASCII</category><category>ASCII-Art</category><category>cowsay</category><category>cowthink</category><category>figlet</category>
		<guid isPermaLink="false">http://blog.pimpmyshell.de/2007/07/14/spas-in-ascii-art-cowsay-and-figlet/</guid>
		<description><![CDATA[Hast du dir schon einmal gewünscht, die Standardausgabe lustiger zu gestalten? Dieser Artikel beschreibt zwei Programme zum generieren einer nicht ganz so standardisierten Ausgabe in der Shell: cowsay und figlet. Was ist ASCII Art? ASCII Art ist Kunst, die größtenteils auf Computern präsentiert wird und aus den 95 (von den 128) druckbaren Zeichen des ASCII-Standards [...]]]></description>
			<content:encoded><![CDATA[<p>Hast du dir schon einmal gewünscht, die Standardausgabe lustiger zu gestalten? Dieser Artikel beschreibt zwei Programme zum generieren einer nicht ganz so standardisierten Ausgabe in der Shell: <strong>cowsay</strong> und <strong>figlet</strong>.<br />
<span id="more-100"></span></p>
<h3>Was ist ASCII Art?</h3>
<p><em>ASCII Art</em> ist Kunst, die größtenteils auf Computern präsentiert wird und aus den 95 (von den 128) druckbaren Zeichen des <a href="http://de.wikipedia.org/wiki/ASCII">ASCII</a>-Standards besteht, die geschickt zu Piktogrammen zusammengesetzt werden. Weitere Informationen dazu gibt es <a href="http://en.wikipedia.org/wiki/ASCII_art">hier</a>.</p>
<h3>Installation</h3>
<p>Wenn du Glück hast, sind Cowsay und Figlet bereits in den Paketquellen deiner Distribution enthalten. In Debian, Ubuntu und deren Derivaten ist dies der Fall. Um unter Debian/Ubuntu die benötigte Software zu installieren gib folgendes in die Shell ein:</p>
<p><code>sudo apt-get install cowsay figlet</code></p>
<p>Nach ein Paar Sekunden kannst du die Programme bereits nutzen. Natürlich kannst du auch Synaptic oder andere Alternativen für die Installation nutzen.</p>
<h3>Cowsay und Cowthink</h3>
<p>Cowsay/Cowthink ist ein Programm, das eine ASCII-Kuh (oder auch andere Tiere, darauf gehe ich später noch näher ein) generiert, welche Text in einem Comic-artigem Stil präsentiert. Damit kannst du also ASCII-Tiere ihren (deinen) Senf zu allem abgeben lassen.<br />
Du hast es bestimmt schon erraten: Der Unterschied zwischen <em>cowsay</em> und <em>cowthink</em> ist die Art der Blasen, die generiert werden. <em>Cowsay</em> für Sprechblasen und <em>cowthink</em> für Denkblasen. :-)</p>
<p>Ok, los gehts:<br />
<img id="image101" src="http://blog.pimpmyshell.de/uploads/2007/07/cowsay1.png" alt="Cowsay" /><br />
Das war die Ausgabe von:</p>
<p><code>cowsay "Pimpmyshell rockt"</code></p>
<p>Neben diesem Befehl gibt es noch einige Optionen (Parameter), welche deinen Text noch ein wenig cooler aussehen lassen.</p>
<p>Probieren wir folgenden Befehl aus:</p>
<p><code>cowsay -f name "beispiel_text"</code></p>
<p>Das würde <strong>beispiel-text</strong> mit dem Tier <strong>name</strong> erzeugen.</p>
<p>Die verfügbaren Tiere können in /usr/share/cowsay/cows (Pfad kann variieren) gefunden werden.</p>
<p>In meinem Fall gibt</p>
<p><code> ls /usr/share/cowsay/cows</code></p>
<p>Folgende Liste von Dateien aus:</p>
<p><code>apt.cow eyes.cow moofasa.cow surgery.cow<br />
beavis.zen.cow flaming-sheep.cow moose.cow telebears.cow<br />
bong.cow ghostbusters.cow mutilated.cow three-eyes.cow<br />
bud-frogs.cow head-in.cow ren.cow turkey.cow<br />
bunny.cow hellokitty.cow satanic.cow turtle.cow<br />
cheese.cow kiss.cow sheep.cow tux.cow<br />
cower.cow kitty.cow skeleton.cow udder.cow<br />
daemon.cow koala.cow small.cow vader.cow<br />
default.cow kosh.cow sodomized.cow vader-koala.cow<br />
dragon-and-cow.cow luke-koala.cow sodomized-sheep.cow www.cow<br />
dragon.cow mech-and-cow.cow stegosaurus.cow<br />
elephant.cow meow.cow stimpy.cow<br />
elephant-in-snake.cow milk.cow supermilker.cow</code></p>
<p>Statt <strong>name</strong> lässt sich also einer dieser Dateinamen (ohne die Endung (.cow) ) eintragen. Einer meiner lieblinge ist:</p>
<p><code>cowsay -f vader "I'm your father"</code></p>
<p><img id="image102" src="http://blog.pimpmyshell.de/uploads/2007/07/cowsay2.png" alt="Cowsay Cowth Vader" /></p>
<p>Ein anderer interressanter Weg zum personalisieren unserer Kuh, ist die Form der Augen zu verändern. Dafür gibt es folgende Optionen:</p>
<p><code>-b -d -t -y -g -p -s -w</code></p>
<p>Anstatt dass ich jetzt alle Optionen ausführe, schlage ich vor das Programm mit einem der Optionen selbst auszuprobieren, um mit eigenen Augen zu sehen was passiert (oder wie sich die Kuh verändert).</p>
<p>Ein weiterer Weg, die Form der Augen zu verändern ist:</p>
<p><code>-e "form_der_augen"</code></p>
<p>Der Befehl:</p>
<p><code>cowsay -e "TT" "Pimpmyshell"</code></p>
<p>zum Beispiel gibt folgendes aus:<br />
<img id="image103" src="http://blog.pimpmyshell.de/uploads/2007/07/cowsay3.png" alt="Cowsay" /></p>
<p>Die Augen müssen nicht unbedingt symetrisch sein. Ausserdem sind die Augen auf zwei Zeichen begrenzt. Jeder Versuch also, die Augen irgendwie komplizierter zu gestalten wird leider fehlschlagen.</p>
<p>Unglücklicherweise funktioniert die Option -e auch nur mit der Standard ASCII-Kuh.</p>
<p>Zum Schluss sei die Option</p>
<p><code>-W anzahl_der_spalten</code></p>
<p>erwähnt, wobei <strong>anzahl_der_spalten</strong> definiert, wie lang (in Spalten) eine Textzeile sein darf.</p>
<p>Wenn <strong>anzahl_der_spalten</strong> auf &#8220;10&#8243; gesetzt wird, werden neun Zeichen in der ersten Zeile ausgegeben und der zehnte in die nächste Zeile verschoben.</p>
<p>Die Ausgabe von:</p>
<p><code>cowsay -W 4 "Pimpmyshell rockt"</code></p>
<p>würde also wie folgt aussehen:<br />
<img id="image104" src="http://blog.pimpmyshell.de/uploads/2007/07/cowsay4.png" alt="Cowsay Pimpmyshell rockt" /></p>
<p>Am Ende muss ich noch erwähnen, dass Cowsay in PERL geschrieben wurde. Prüfe also vor der Installation PERL auf deinem System vorhanden ist. Wenn Cowsay nicht in deinen Paketquellen enthalten ist, kannst du es <a href="http://www.nog.net/~tony/warez/cowsay.shtml">hier</a> herunterladen. </p>
<p>Ein letzter Tipp noch:<br />
Du willst deine generierte ASCII-Kuh in einer Datei speichern? Kein Problem. Du musst lediglich die Ausgabe von Cowsay in eine Datei umleiten. Und zwar so:</p>
<p><code>cowsay "Pimpmyshell" &gt;&gt; datei.txt</code></p>
<p>Dieser Befehl speichert die Ausgabe von Cowsay in die Datei &#8220;datei.txt&#8221;.</p>
<h3>Figlet</h3>
<p>Schluss mit dem vielem Gerede über Kühe, weiter gehts zum nächsten Programm &#8211; <strong>Figlet</strong>.<br />
Figlet (oder korrekter FIGlet) ist ein Programm zum generieren ornament-ähnlicher Schriftzüge. Anders als bei Cowsay bilden hier die Schriftzüge die ASCII Art, nicht der Rahmen drumherum.</p>
<p>Um mit Figlet einen Schriftzug zu generieren, gib folgenden Befehl ein:</p>
<p><code>figlet Pimpmyshell rockt</code></p>
<p>oder auch</p>
<p><code>figlet "Pimpmyshell rockt"</code></p>
<p>, was folgende Ausgabe erzeugen wird:<br />
<img id="image105" src="http://blog.pimpmyshell.de/uploads/2007/07/figlet1.png" alt="Figlet" /></p>
<p>Im normalfall betrachtet <strong>figlet</strong> alle Argumente als zu erzeugenden Text. Wenn du Optionen benutzt, muss der Text in Anführungszeichen gesetzt werden. Eine der am meisten genutzten Optionen ist <em>kerning</em>, was nichts anderes bedeutet, als dass ein Leerzeichen zwischen die Buchstaben gesetzt wird. Um <em>kerning</em> zu nutzen, muss die Option -k angegeben werden. Der oben generierte Schriftzug zum Beispiel wird wie folgt aussehen:</p>
<p><code>figlet -k "Pimpmyshell rockt"</code></p>
<p><img id="image107" src="http://blog.pimpmyshell.de/uploads/2007/07/figlet2.png" alt="Figlet mit kerning" /><br />
Man sieht den Unterschied, oder? Eine weitere Option ist die Textausrichtung. Es gibt 3 Standardpositionen:</p>
<ul>
<li>Nach Links ausgerichtet (Option <code>-l</code>),</li>
<li>Nach Rechts ausgerichtet (Option <code>-r</code>),</li>
<li>Zentriert (Option <code>-c</code>).</li>
</ul>
<p>Figlet erlaubt die generierung von Schriftzügen, die diverse Schriftarten nachahmen. Abgesehen von der vorgegebenen Schriftart lassen sich noch ein Paar andere auswählen. Eine Liste der verfügbaren Schriftarten ist im Verzeichnis /usr/share/figlet (die dateien mit der Endung &#8220;.flf.&#8221;) zu finden.</p>
<p>Um eine bestimmte Schriftart zu nutzen, kann die Option <code>-f schriftart</code> verwendet werden, wobei <strong>schriftart</strong> den Dateinamen der Schriftart (ohne die Endung) darstellt.</p>
<p>So lässt sich etwa der Schriftzug &#8220;Pimpmyshell rockt&#8221; in Schreibschrift darstellen:<br />
Der Befehl:</p>
<p><code>figlet -f script "Pimpmyshell rockt"</code></p>
<p>Und seine Ausgabe:<br />
<img id="image108" src="http://blog.pimpmyshell.de/uploads/2007/07/figlet3.png" alt="Figlet" /></p>
<p>Da wäre ausserdem noch die Option <code>-d verzeichnis</code> was figlet Schriftarten aus <strong>verzeichnis</strong> nutzen lässt.</p>
<p>Und noch viele weitere Optionen, welche ich hier jetzt aber nicht weiter ausführen werde (dafür sind die Manpages da).</p>
<p>Die <a href="http://www.figlet.org/">Website von Figlet</a> ist übrigens nicht die einzige ihrer Art. Wegen seiner Popularität existieren noch eine Menge anderer im Internet. Figlet-Schriftzüge lassen sich <a href="http://www.schnoggo.com/figlet.html">hier</a> sogar im Webbrowser erzeugen.</p>
<p><em>Dieser Artikel wurde von mir mit freundlicher Genehmigung von Borys Musielak ins Deutsche übersetzt und leicht verändert. Original article: <a href="http://polishlinux.org/apps/cli/ascii-art-fun-cowsay-and-figlet/">ASCII-Art fun: cowsay and FIGlet</a> at <a href="http://polishlinux.org/">PolishLinux.org</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2007/07/14/spass-in-ascii-art-cowsay-und-figlet/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Die &#8220;Fork Bomb&#8221; und die limits.conf</title>
		<link>http://blog.pimpmyshell.de/2007/07/02/die-fork-bomb-und-die-limitsconf/</link>
		<comments>http://blog.pimpmyshell.de/2007/07/02/die-fork-bomb-und-die-limitsconf/#comments</comments>
		<pubDate>Mon, 02 Jul 2007 15:10:17 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[hintergrundwissen]]></category>
<category>"Fork Bomb"</category><category>Debian</category><category>limits.conf</category><category>Shell</category>
		<guid isPermaLink="false">http://blog.pimpmyshell.de/2007/07/02/die-fork-bomb-und-die-limitsconf/</guid>
		<description><![CDATA[Ich wurde heute gebeten, doch mal folgende Zeile in der nächstbesten Shell auszuführen: $ :(){ :&#124;:&#038; };: Ich könnte nun die Zeile unerklärt lassen. Wissend, dass andere Nutzer der Shell diese aus lauter neugierde ausprobieren. Mache ich aber nicht. Punkt. Der Anschauligkeit halber hier das Script erst noch einmal in der Standartnotation: :() { : [...]]]></description>
			<content:encoded><![CDATA[<p>Ich wurde heute gebeten, doch mal folgende Zeile in der nächstbesten Shell auszuführen:</p>
<p><code>$ :(){ :|:&#038; };:</code></p>
<p>Ich könnte nun die Zeile unerklärt lassen. Wissend, dass andere Nutzer der Shell diese aus lauter neugierde ausprobieren. Mache ich aber nicht. Punkt.<span id="more-95"></span></p>
<p>Der Anschauligkeit halber hier das Script erst noch einmal in der Standartnotation:</p>
<p><code>:() {<br />
 : | : &#038;<br />
};<br />
:</code></p>
<p>Dieses kleine Script erzeugt eine Funktion namens &#8220;:&#8221;, welche sich selbst rekursiv aufruft. Zwei mal. Im Hintergrund. Weil sich die Funktion (ewig) immer und immer wieder selbst aufruft, frisst das sehr schnell eine menge Systemressourcen. Deswegen der Name &#8220;Fork Bomb&#8221;.</p>
<p>Wer das immer noch nicht versteht, hier eine noch einfachere Version:</p>
<p><code>forkbomb() {<br />
forkbomb | forkbomb &#038;<br />
};<br />
forkbomb</code></p>
<p>In der Funktion wird eine sogenannte <a href="http://www.selflinux.org/selflinux/html/bash_basic03.html">Pipe</a> erzeugt, welche zwei weitere Instanzen der Funktion (jede wird ein eigener Prozess, nicht nur ein &#8220;Child&#8221;, welches wenn der Urprozess gekillt, ebenfalls beendet wird.) in den Hintergrund <a href="http://de.wikipedia.org/wiki/Fork_(Unix)">forkt</a>. Für jede Instanz der Funktion entstehen Zwei neue. Das Ergebnis ist eine gewaltige Nummer von Prozessen, welche sehr schnell erzeugt werden.</p>
<p>Wie also unschwer zu erkennen ist, sollte das nicht leichtsinnig ausprobiert werden.</p>
<p>Übrigens sind damit, gerade auf Multiusersystemen fürchterliche Horrorszenarien (für den admin, versteht sich) denkbar. Die Zahl der Prozesse, die ein User maximal gleichzeitig aufrufen kann lässt sich unter Debian (und Derivaten wie Ubuntu) in der Datei <code>/etc/security/limits.conf</code> festlegen. Mehr dazu gibt es <a href="http://www.linux-hamburg.de/limits.html">hier</a> und <a href="http://www.selflinux.org/selflinux/html/grundlagen_sicherheit05.html">hier</a>.</p>
<p>(Dieser Beitrag steht unter einer <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.de">Creative-Commons-Lizenz</a> und wurde erstmals am Mittwoch, dem 27. Juni 2007 um 1:44 auf <a href="http://jeremy.lonien.de/?p=440">jeremy.lonien.de</a> veröffentlicht.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2007/07/02/die-fork-bomb-und-die-limitsconf/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>zufällige Passwörter generieren</title>
		<link>http://blog.pimpmyshell.de/2007/05/22/zufallige-passworter-generieren/</link>
		<comments>http://blog.pimpmyshell.de/2007/05/22/zufallige-passworter-generieren/#comments</comments>
		<pubDate>Tue, 22 May 2007 22:22:54 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[tutorials]]></category>
<category>/dev/random</category><category>apg</category><category>otp</category><category>passwort</category><category>passwort generator</category><category>pwgen</category>
		<guid isPermaLink="false">http://blog.pimpmyshell.de/2007/05/22/zufallige-passworter-generieren/</guid>
		<description><![CDATA[Ich bin in letzter Zeit des öfteren über das Problem gestolpert, mir neue Passwörter ausdenken zu müssen. Da ich keine nun weder lust auf &#8220;auf die schnelle&#8221; ausgedachte und extrem unsichere Passwörter wie password123 hatte, noch auf grafische Tools zurückgreifen wollte, habe ich mich auf die Suche nach Möglichkeiten zur Passwortgenerierung in der Shell begeben. [...]]]></description>
			<content:encoded><![CDATA[<p>Ich bin in letzter Zeit des öfteren über das Problem gestolpert, mir neue Passwörter ausdenken zu müssen. Da ich keine nun weder lust auf &#8220;auf die schnelle&#8221; ausgedachte und extrem unsichere Passwörter wie <strong>password123</strong> hatte, noch auf grafische Tools zurückgreifen wollte, habe ich mich auf die Suche nach Möglichkeiten zur Passwortgenerierung in der Shell begeben.<br />
<span id="more-88"></span></p>
<h3>/dev/random</h3>
<p>Die naheliegenste, wenn auch aufwändigste Methode (unter Linux) ist es, /dev/random zu nutzen. Mein erster Versuch sah wie folgt aus:</p>
<p><code>jxn@david:~$ head -n 1 /dev/random<br />
A��ɫ�M����▒$+�+Ť���d����t��~#9yi���m</code></p>
<p>, was (wie man oben sehen kann) einen ziemlich unbrauchbaren Müll erzeugte.</p>
<p>Im nächsten Versuch holte ich mir nur noch die ersten 9 Zeichen statt einer ganzen Zeile und wandelte mit <strong>uuencode</strong> alles in leserliches ASCII um:</p>
<p><code>jxn@david:~$ head -c 9 /dev/random | uuencode -m -<br />
begin-base64 644 -<br />
G7n6csku<br />
====</code></p>
<p>Unglücklicherweise gab es da noch diesen eigenartigen Müll vor und nach meinem gewünschten Passwort. Es gibt viele Wege, dies zu beseitigen. Ich nahm <strong>sed</strong>:</p>
<p><code>jxn@david:~$ head -c 9 /dev/random | uuencode -m - | sed -n '2p'<br />
LdsZTzueVFMS</code></p>
<p>Tadaa! Das einzige verbleibende Problem könnten noch ungewünschte Zeichen wie /, +, ? oder _ sein, welche sich aber ebenfalls mit sed und ein Paar <a href="http://de.wikipedia.org/wiki/Regulärer_Ausdruck" title="Link zum Wikipedia-Artikel">regulären Ausdrücken</a> leicht entfernen lassen:</p>
<p><code>jxn@david:~$ head -c 9 /dev/random | uuencode -m - | sed -n '2s/[^a-zA-Z 0-9]//;2p'<br />
wsS8xBNMGDSA</code></p>
<p>Fertig. Ich empfehle aus Komfortgründen jedoch, das ganze in ein Shellscript zu packen. ;-)</p>
<p>Das Problem der mit /dev/random genertieren Passwörter ist jedoch, dass sie in den meisten Fällen nicht aussprechbar sind und sich deswegen nicht sehr gut merken lassen: </p>
<p><code>mmN7kDsf+Ag z9E60Ve+vdP zzGYMiBEnkfV zMy5F8QHFG6c Msa9VrXSlWz3 u87UkaPLhBJy nw1jbXg1Gavo wFHnpCAiDkYg 0VgdCgSoN0n9 JcjT2SR8LWJY</code></p>
<h3>pwgen</h3>
<p>Wer sich Passwörter wünscht, die sich garantiert leichter merken lassen, der sollte das Programm <strong>pwgen</strong> ausprobieren. Es generiert ebenfalls zufällige Passwörter und sollte in den meisten Distributionen verfügbar sein. Das Programm ist zunächst ein wenig knifflig weil es, wenn ohne Parameter ausgeführt eine Tabelle mit 50 Passwörtern generiert. Um nur ein Passwört ausgeben zu lassen genügt ein:</p>
<p><code>pwgen -1</code></p>
<p>Andererseits generiert das Programm ebenfalls nur ein einziges Passwort wenn die Ausgabe in eine Datei umgeleitet wird. In wirklichkeit sind natürlich nicht alle Passwörter aussprechbar oder gar leicht zu merken. Aber die meisten von ihnen sind es, und das ist mehr als genug. Als kleines Beispiel hier noch ein paar der von pwgen generierten Passwörter:</p>
<p><code>zaiCh7th Eeheex3j hooKah1d eeQua8ie Ooghath8 queo3EiP teiP5lan aheeCh4r</code></p>
<h3>otp</h3>
<p>Ein weiteres nützliches Programm ist <strong>otp</strong>, was eigentlich ein Akronym ist und für <a href="http://de.wikipedia.org/wiki/One-Time-Pad">One Time Pad</a> steht. Es wurde entwickelt, um Schlüssel für jene Verschlüsselungsmethode zu generieren. Aber die Standardausgabe reicht für unsere Zwecke völlig. Hier noch ein Beispiel für die Ausgabe von otp:</p>
<p><code> 1) arri-ylew   2) riuo-ytrh   3) wkgc-elrb   4) npfn-ffkb<br />
 5) hptz-dlzv   6) yawa-vfhs   7) ohmp-rsun   8) cajw-bfqg</code></p>
<p>Genau wie pwgen generiert otp standardmäßig 50 Passwörter. Um nur ein einziges auszugeben,  (für Scripts beispielsweise) reicht:</p>
<p><code>otp -n1</code></p>
<h3>apg</h3>
<p>Solltet ihr eine noch größere Zufälligkeit brauchen, werdet ihr warscheinlich <strong>apg</strong> mögen. Ohne Parameter ausgeführt, fragt es euch zunächst nach ein wenig <em>Eingabe</em> eurerseits. Der Algorithmus generiert dann eine Liste von Passwörtern, auf eurer Eingabe basierend. Hier eine Beispielausgabe:</p>
<p><code>8obPactAblo (EIGHT-ob-Pact-A-blo)<br />
tu8VoazCiati (tu-EIGHT-Voaz-Ciat-i)<br />
rojKeOc0 (roj-Ke-Oc-ZERO)<br />
JedHeej9 (Jed-Heej-NINE)<br />
Konquedeps4 (Kon-qued-eps-FOUR)<br />
yov0HoobBoy (yov-ZERO-Hoob-Boy)</code></p>
<p>Wie ihr oben sehen könnt, gibt apg euch Tipps zum aussprechen (und damit automatisch leichter merken) der Passwörter. Zwar leider auf Englisch, aber das sollte kein Problem darstellen. Für Scripts gibt</p>
<p><code>apg -n 1</code></p>
<p>nur ein Passwort (ohne den Tipp) aus, welches sich leicht in weitere Programme umleiten lässt.</p>
<p>Wenn ihr euch also das nächste mal an einer dieser albernen &#8220;Web 2.0 Sites&#8221; anmeldet, ist es vielleicht Klug ein starkes Passwort zu verwenden. Und wenn euch gerade keines einfällt, so könnt ihr mit den Tools die ich euch gerade vorgestellt habe, euch auf die schnelle eins generieren lassen. :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2007/05/22/zufallige-passworter-generieren/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The Top Ten Unix Shell Commands You Use</title>
		<link>http://blog.pimpmyshell.de/2007/05/21/the-top-ten-unix-shell-commands-you-use/</link>
		<comments>http://blog.pimpmyshell.de/2007/05/21/the-top-ten-unix-shell-commands-you-use/#comments</comments>
		<pubDate>Mon, 21 May 2007 15:49:05 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[fun]]></category>
		<category><![CDATA[webseiten]]></category>
<category>shell</category><category>unix</category>
		<guid isPermaLink="false">http://blog.pimpmyshell.de/2007/05/21/the-top-ten-unix-shell-commands-you-use/</guid>
		<description><![CDATA[IBM hat im September letzten Jahres einen netten Artikel über UNIX Productivity tips veröffentlicht. In jenem Artikel gibt es einen Einzeiler, welcher die meistbenutzten Shellkommandos auflistet. Uwe Hermann hat den Einzeiler so geändert, dass er nur noch die Top Ten anzeigt und ihn in seinem Blog veröffentlicht: history&#124;awk '{print $2}'&#124;awk 'BEGIN {FS="&#124;"} {print $1}'&#124;sort&#124;uniq -c&#124;sort [...]]]></description>
			<content:encoded><![CDATA[<p>IBM hat im September letzten Jahres einen netten <a href="http://www-128.ibm.com/developerworks/aix/library/au-productivitytips.html?ca=dgr-lnxw07UNIX-Office-Tips">Artikel über UNIX Productivity tips</a> veröffentlicht. In jenem Artikel gibt es einen Einzeiler, welcher die meistbenutzten Shellkommandos auflistet. Uwe Hermann hat den Einzeiler so geändert, dass er nur noch die Top Ten anzeigt und ihn in seinem Blog <a href="http://www.hermann-uwe.de/blog/the-top-ten-unix-shell-commands-you-use">veröffentlicht</a>:</p>
<p><code>history|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c|sort -rn|head -10<br />
</code><span id="more-87"></span></p>
<p>In meinem Fall wäre das:<br />
<code><br />
     95 sudo<br />
     36 cd<br />
     32 ls<br />
     30 ps<br />
     28 locate<br />
     24 less<br />
     22 wget<br />
     18 rm<br />
     12 ssh<br />
     12 logout<br />
</code></p>
<p>So, jetzt seid ihr dran. Was sind eure Top Ten Unix Shell Commands?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pimpmyshell.de/2007/05/21/the-top-ten-unix-shell-commands-you-use/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
	</channel>
</rss>
