<?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>controlc.de &#187; command line</title>
	<atom:link href="http://controlc.de/tag/command-line/feed/" rel="self" type="application/rss+xml" />
	<link>http://controlc.de</link>
	<description>mehr als nur ein Notizblock</description>
	<lastBuildDate>Fri, 13 Jan 2012 18:37:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>mac &#124; Manches ist einfacher als man denkt …</title>
		<link>http://controlc.de/2011/01/21/mac-manches-ist-einfacher-als-man-denkt/</link>
		<comments>http://controlc.de/2011/01/21/mac-manches-ist-einfacher-als-man-denkt/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 16:56:03 +0000</pubDate>
		<dc:creator>controlc.de</dc:creator>
				<category><![CDATA[mac]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[c´t]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[sysctl]]></category>
		<category><![CDATA[sysctl.conf]]></category>

		<guid isPermaLink="false">http://controlc.de/?p=1953</guid>
		<description><![CDATA[Man sollte nicht immer alles so hinnehmen, was Andere so schreiben — egal wie sehr man ihnen Profession anerkennt. Bestes Beispiel ist der Artikel von MacMacken zum Thema IPv6-Privatsphäre. Da verweist er auf einen Artikel der Zeitschrift c´t in dem es um die Privacy Extension für IPv6 geht und darum, das diese bei OSX nicht [...]]]></description>
			<content:encoded><![CDATA[	<p style="text-align: center;"><a href="http://controlc.de/wp-content/uploads/2011/01/konfus.png" class="floatbox" rev="group:1953 caption:`konfus`"><img class="aligncenter size-full wp-image-1955" title="konfus" src="http://controlc.de/wp-content/uploads/2011/01/konfus.png" alt="" width="333" height="268" /></a></p>
	<p>Man sollte nicht immer alles so hinnehmen, was Andere so schreiben — egal wie sehr man ihnen Profession anerkennt. Bestes Beispiel ist der Artikel von MacMacken zum Thema <a href="http://www.macmacken.com/2011/01/17/ipv6-privatsphaere-fuer-mac-os-x-sowie-ios-mit-jailbreak/">IPv6-Privatsphäre</a>. Da verweist er auf einen <a href="http://www.heise.de/netze/hotline/IPv6-anonym-1100727.html">Artikel</a> der Zeitschrift c´t in dem es um die Privacy Extension für IPv6 geht und darum, das diese bei OSX nicht per Default aktiviert sind. Eine Aufklärung, wie man diese denoch bei OSX aktiviert wird aufgezeigt. Da dieses Aktivierung per <em>sysctl</em> (also per Befehlszeile) erfolgt, ist sie somit auch nicht Neustart-sicher. Die Lösung der c´t lautet daher ihren selbstgebauten LaunchDaemon herunterzuladen und zu installieren. Dabei gibt es, wie auch bei anderen *nix/BSD-Betriebssystemen, eine deutlich einfachere Lösung:</p>
	<p>Man lege eine Datei <em>/etc/sysctl.conf</em> mit dem Inhalt</p>
	<pre>net.inet6.ip6.use_tempaddr=1</pre>
	<p>an und nach einem Reboot kann man mit dem Befehl</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> sysctl net.inet6.ip6.use_tempaddr</pre></div></div>

	<p>herausfinden, das das Ergebnis<a href="http://controlc.de/wp-content/uploads/2011/01/Terminal-sysctl.png" class="floatbox" rev="group:1953 caption:`Terminal - sysctl`"><img class="aligncenter size-full wp-image-1959" title="Terminal - sysctl" src="http://controlc.de/wp-content/uploads/2011/01/Terminal-sysctl.png" alt="" width="511" height="219" /></a>ist und somit die Einstellungen wirken.</p>
	<p>Es hilft in Zukunft also durchaus mal nachzudenken und das auszuprobieren, was bei anderen *nix/BSD-Betriebssystemen auch funktioniert — auch eine mehr oder minder renomierte Zeitschrift wie die c´t kann sich irren. Übrigens verweist Apple in seinen man-Pages selbst auf <a href="http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man5/sysctl.conf.5.html">sysctl.conf</a> <img src='http://controlc.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .
</p>
]]></content:encoded>
			<wfw:commentRss>http://controlc.de/2011/01/21/mac-manches-ist-einfacher-als-man-denkt/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>bash &#124; History aufwerten</title>
		<link>http://controlc.de/2010/03/14/bash-history-aufwerten/</link>
		<comments>http://controlc.de/2010/03/14/bash-history-aufwerten/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 09:00:52 +0000</pubDate>
		<dc:creator>controlc.de</dc:creator>
				<category><![CDATA[allgemeine IT]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[.bash_profile]]></category>
		<category><![CDATA[.profile]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://controlc.de/?p=614</guid>
		<description><![CDATA[Wenn man öfter auf der Kommandozeile arbeitet lernt man die History-Funktion zu schätzen. Hier eine lose Aufstellung einiger Möglichkeiten, wie man die History-Funktion noch weiter aufbohren und an seine Bedürfnisse anpassen kann. Update: Aufgrund von weiteren Recherchen und des Kommentars auf macfidelity habe ich diesen Artikel noch einmal überarbeitet und weitere Informationen hinzugefügt. Einleitung Die [...]]]></description>
			<content:encoded><![CDATA[	<p><a href="http://controlc.de/wp-content/uploads/2009/06/bash-history-terminal.png" class="floatbox" rev="group:614 caption:`bash-history-terminal`"><img class="aligncenter size-full wp-image-1581" title="bash-history-terminal" src="http://controlc.de/wp-content/uploads/2009/06/bash-history-terminal.png" alt="" width="200" height="178" /></a></p>
	<p>Wenn man öfter auf der Kommandozeile arbeitet lernt man die History-Funktion zu schätzen. Hier eine lose Aufstellung einiger Möglichkeiten, wie man die History-Funktion noch weiter aufbohren und an seine Bedürfnisse anpassen kann.<br />
<strong>Update:</strong> <em>Aufgrund von weiteren Recherchen und des <a href="http://macfidelity.de/2010/03/11/randnotiz-tweaking-terminal-history/#comment-14527">Kommentars</a> auf <a href="http://macfidelity.de">macfidelity</a> habe ich diesen Artikel noch einmal überarbeitet und weitere Informationen hinzugefügt.</em><br />
<span id="more-614"></span></p>
	<h3>Einleitung</h3>
	<p>Die History ist eine eingebaute Funktion in dem Befehlsinterpreter <a href="http://www.gnu.org/software/bash/">bash</a> — der Standardshell inzwischen vieler *nixe bzw. *BSDs, so auch von Mac OS X. Die History hat eingebaute Befehle, die man wunderbar im <a href="http://www.gnu.org/software/bash/manual/bashref.html#Bash-Builtins">Handbuch von Bash</a> nachlesen kann, oder in Kürze erklärt bei <a href="http://macfidelity.de/2010/03/11/randnotiz-tweaking-terminal-history/">macfidelity</a> findet. Das Grundverhalten der History kann man, wie auch ziemlich vieler anderer Funktionen, in den Profil-Dateien der bash definieren. Dazu möchte ich auf den Artikel <a href="http://controlc.de/2010/03/12/bash-shell-einrichten/">Bash-Shell einrichten</a> verweisen.</p>
	<h3>History von mehreren parallel laufenden Terminalsessions sichern</h3>
	<p>Oft genug hat man mehrere Terminalsessions zu einem Host offen um sich z.B. in der einen Session das Logfile anzuschauen, während man in anderen Session einen Befehl ausführt. Beim Beenden der Session wird aber nur eine History gespeichert. Um immer hinzuzufügen führt man folgenden Befehl aus</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">shopt</span> <span style="color: #660033;">-s</span> histappend</pre></div></div>

	<h3>History sofort speichern</h3>
	<p>Die History einer Sesion wird immer erst beim Beenden einer Session in die Datei .bash_history gespeichert. Um bei parallelen Terminalsessions auf die Befehle zuzugreifen, die gerade erst in einer anderen Session getätigt wurden, kann man mit der Umgebungsvariablen</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PROMPT_COMMAND</span>=<span style="color: #ff0000;">'history -a'</span></pre></div></div>

	<p>die Shell dazu zwingen bei jedem Generieren eines neuen Prompts (als einer Befehlseingabezeile) die History zu schreiben.</p>
	<h3>History mit Timestamp</h3>
	<p>Um im Historyfile sich pro Befehl auch einen Timestamp hinzufügen zu lassen gibt man folgendes ein:</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">HISTTIMEFORMAT</span>=<span style="color: #ff0000;">'%a %T '</span></pre></div></div>

	<p>Die Variablen dafür kann man sich von <a href="http://php.net/manual/de/function.strftime.php">strftime</a> abschauen.</p>
	<h3>Größe des History-Speichers in der Datei</h3>
	<p>Wie viele Zeile die History-Datei speichern kann weiß ich zwar nicht genau (ich denke aber das es 500 Zeilen sind), aber vergrößern kann man ihn mit</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">HISTFILESIZE</span>=<span style="color: #000000;">1000</span></pre></div></div>

	<p>oder aber man schaltet gleich die Größenbeschränkung aus:</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">unset</span> HISTFILESIZE</pre></div></div>

	<p>Mit der Variable</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">HISTSIZE</span>=<span style="color: #000000;">500</span></pre></div></div>

	<p>kann man definieren, wie viele Zeilen maximal beim Beenden einer Terminalsession in die History-Datei geschrieben werden.</p>
	<h3>Ignorieren von Befehlen</h3>
	<p>Alle eingegebenen Befehle werden in die History gespeichert. Dieses Verhalten kann man etwas einschränken, indem man Befehle, welche mit einem Leerzeichen anfangen nicht in die History aufnehmen läßt</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">HISTCONTROL</span>=ignorespace</pre></div></div>

	<p>So kann man auch bewußt Befehle nicht in die History schreiben lassen, wenn man z.B. statt »<em>ls«</em> einfach «<em> ls</em>« eingibt.</p>
	<h3>Keine Duplikate in die History</h3>
	<p>Wie oben schon beschrieben werden alle Befehle in die History aufgenommen, auch die, die mehrfach eingegeben wurden. Möchte man das nicht</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">HISTCONTROL</span>=ignoredups</pre></div></div>

	<p>Möchte man weder Duplikate, noch die mit einem Leerzeichen am Anfang, so gibt man folgendes ein</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">HISTCONTROL</span>=ignoreboth</pre></div></div>

	<h3>Spezielle Zeilen von der History ausschließen</h3>
	<p>Wenn die Variable HISTCONTROL nicht gesetzt ist, kann man auch selbst entscheiden, welche Zeilen nicht in die History aufgenommen werden sollen. Dies geschieht durch die Variable HISTIGNORE, welche mit Doppelpunkten getrennt</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">HISTIGNORE</span>=<span style="color: #ff0000;">'cat*:cd*:vi*:ls*'</span></pre></div></div>

	<p>Damit werden alle Zeilen, die mit <em>cat</em>, <em>cd</em> oder<em> vi</em> oder<em> ls</em> beginnen, nicht in der History gespeichert. Es bietet sich auch an hier alle selbst definierten Aliase anzugeben. Da theoretisch hier mit regulären Ausdrücken gearbeitet werden kann, stehen der Phantasie alle Möglichkeiten offen.</p>
	<h3>Fragen über Fragen</h3>
	<p><em>Kennt Ihr noch mehr Befehle um die History zu »pimpen«? <span style="text-decoration: line-through;">Ich kann mich daran erinnern, das es einen Befehl gab, mit dem man automatisch gleich nach jedem Return den Befehl in die History schreiben lassen kann — aber wie hies der nur?</span></em>
</p>
]]></content:encoded>
			<wfw:commentRss>http://controlc.de/2010/03/14/bash-history-aufwerten/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>bash &#124; Shell einrichten</title>
		<link>http://controlc.de/2010/03/12/bash-shell-einrichten/</link>
		<comments>http://controlc.de/2010/03/12/bash-shell-einrichten/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 13:08:54 +0000</pubDate>
		<dc:creator>controlc.de</dc:creator>
				<category><![CDATA[allgemeine IT]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[.bash_profile]]></category>
		<category><![CDATA[.profile]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[farben]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[inputrc]]></category>
		<category><![CDATA[ls colors]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[prompt]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://controlc.de/?p=912</guid>
		<description><![CDATA[Gerade bei OSX kommt man ja meist drumherum mit der Kommandozeile zu arbeiten — dabei kann man in der Shell einiges schneller bzw. einfacher machen und um gewisse Einstellungen von OSX (wie zum Beispiel hier und hier beschrieben) zu ändern kommt man nicht umher das Terminal zu öffnen. Vorgeplänkel Wie man im Finder oder in [...]]]></description>
			<content:encoded><![CDATA[	<p><a href="http://controlc.de/wp-content/uploads/2009/11/Bash.png" class="floatbox" rev="group:912 caption:`Bash`"><img class="aligncenter size-medium wp-image-1063" title="Bash" src="http://controlc.de/wp-content/uploads/2009/11/Bash-300x232.png" alt="" width="300" height="232" /></a></p>
	<p>Gerade bei OSX kommt man ja meist drumherum mit der Kommandozeile zu arbeiten — dabei kann man in der Shell einiges schneller bzw. einfacher machen und um gewisse Einstellungen von OSX (wie zum Beispiel <a href="http://controlc.de/2009/06/11/mac-apple-mail-optimieren/">hier</a> und <a href="http://controlc.de/2009/10/30/mac-apple-mail-das-kopieren-von-email-adressen/">hier</a> beschrieben) zu ändern kommt man nicht umher das Terminal zu öffnen.<span id="more-912"></span></p>
	<h3>Vorgeplänkel</h3>
	<p>Wie man im Finder oder in jedem anderen Programm zuerst seine Benutzeroberfläche einrichtet, so macht man das auch in der Kommandozeile. Nur wird das hier nicht über eine Preference File gemacht sondern über (in OSX) versteckte Systemdateien. Da OSX diese Schreiben bzw. Erstellen dieser Dateien zum Teil für den normalen Benutzer verboten hat, muss man daran denken, das man sich <em>root</em>–Rechte holt. Das geht einmal mit dem Account <em>root </em>(Zur Aktivierung des <em>root</em>–Accounts verweise ich auf <a href="http://support.apple.com/kb/HT1528">Apple</a>), zu dem ich mit dem Shell-Befehl</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">su</span> -</pre></div></div>

	<p>oder</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #660033;">-s</span></pre></div></div>

	<p>wechsle. Oder aber zukünftig jedem Befehl ein</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span></pre></div></div>

	<p>voransetze.</p>
	<p>Für die Individualisierung der Shell sind verschiedene Dateien und Verzeichnisse wichtig. Zuerst wird zwischen den Benutzereinstellungen und den Einstellungen für den ganzen Rechner unterschieden. Die Benutzereinstellungen liegen im Userverzeichnis, also <em>/Users/BENUTZERNAME</em> (Ausnahme hier ist der Benutzer<em> root</em>, der sein Homeverzeichnis in <em>/root</em> findet) und die Systemeinstellungen im Verzeichnis <em>/etc</em>. Wie die Namen schon sagen, sind die ersteren nur für den angemeldeten Benutzer gültig, die Systemeinstellungen für jeden Benutzer.</p>
	<p>Individuelle Anpassungen kann man einmal für das Tastaturmapping machen — hier sind die Dateien <em>/etc/inputrc </em>bzw. <em>~/.inputrc</em> verantwortlich und für  das Aussehen bzw. das definieren von Umgebungsvariablen — dafür sind die Dateien <em>/etc/profile</em> und <em>/etc/bash.bashrc</em> bzw. <em>~/.bash_profile, ~/.profile, ~/.bashrc</em> und <em>~/bash_login</em>. Eine gute Zusammenfassung der Reihenfolge der Abarbeitung der Dateien findet man <a href="http://stefaanlippens.net/bashrc_and_others">hier</a>. Der Einfachheit halber benutze ich in diesem Artikel die Datei <em>profile</em>.</p>
	<h3>Farben für den tristen Alltag</h3>
	<p>Mit Farben kann man sich die Shell übersichtlicher machen. Dazu hat <a href="http://macfidelity.de/2009/10/09/mac-snow-leopard-terminal-einrichten/">fidel</a> schon mal was geschrieben. Definiert werden diese in der Profil-Datei. Man kann den Prompt bearbeiten (Farbe und Aussehen).  Standard ist folgendes Aussehen</p>
	<p><a href="http://controlc.de/wp-content/uploads/2010/03/default-shell-look.png" class="floatbox" rev="group:912 caption:`default shell look`"><img class="aligncenter size-medium wp-image-1547" title="default shell look" src="http://controlc.de/wp-content/uploads/2010/03/default-shell-look-300x132.png" alt="" width="300" height="132" /></a>In meinem Fall brauche ich die Angabe des Rechner-Namens nicht und ein nettes Gelb kann auch nicht schaden</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PS1</span>=<span style="color: #ff0000;">&quot;\[\e[33;1;40m\][\u] \w&gt;\[\e[0m\] &quot;</span></pre></div></div>

	<p><a href="http://controlc.de/wp-content/uploads/2010/03/modified-ps1-prompt.png" class="floatbox" rev="group:912 caption:`modified ps1 prompt`"><img class="aligncenter size-medium wp-image-1548" title="modified ps1 prompt" src="http://controlc.de/wp-content/uploads/2010/03/modified-ps1-prompt-300x136.png" alt="" width="300" height="136" /></a>Das Gleiche kann man auch für den Prompt definieren, wenn man mit <em>sudo</em> sich temporäre <em>root</em>–Rechte gibt. In meinem Fall möchte ich gelbe Schrift auf einem rotem Untergrund.</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">SUDO_PS1</span>=<span style="color: #ff0000;">&quot;\[\e[33;1;41m\][\u] \w&gt;\[\e[0m\] &quot;</span></pre></div></div>

	<p><a href="http://controlc.de/wp-content/uploads/2010/03/modified-sudo_ps1-prompt.png" class="floatbox" rev="group:912 caption:`modified sudo_ps1 prompt`"><img class="aligncenter size-medium wp-image-1549" title="modified sudo_ps1 prompt" src="http://controlc.de/wp-content/uploads/2010/03/modified-sudo_ps1-prompt-300x136.png" alt="" width="300" height="136" /></a>Das sieht jetzt alles recht kryptisch aus, was daran liegt, das die Programmierung des Prompts in Escape-Sequenzen erfolgen muss. Wenn man etwas tiefer in die Materie einsteigen will, seinen ganz persönlichen Prompt bauen möchte oder schlicht einfach verstehen will, was hier gemacht wird, dem sein <a href="http://blog.pimpmyshell.de/2007/12/10/pimp-your-prompt/">pimp my shell</a> ans Herz gelegt. Es gibt dann auch noch Informationen von <a href="http://www.ibm.com/developerworks/linux/library/l-tip-prompt/">IBM</a> und <a href="http://networking.ringofsaturn.com/Unix/Bash-prompts.php">Ring of saturn</a>.</p>
	<p>Ein oft benutzter Befehl in der Kommandozeile lautet <em>ls</em> zum Anzeigen eine Verzeichnisinhalts. Um die verschiedenen Inhalte wie Verzeichnisse, Dateien, Symlinks und Co. auseinanderzuhalten ist eine farbige Darstellung sehr nützlich. Dies kann man entwerder durch das Aufrufen des Befehls <em>ls</em> mit dem Schalter <em>–G</em> erreichen, oder aber, wenn man die Farben selber definieren will, mit folgenden Umgebungsvariablen</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">CLICOLOR</span>=<span style="color: #000000;">1</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">LSCOLORS</span>=dxfxcxbxegedabagacad</pre></div></div>

	<p>Die Bedeutung der jeweiligen Optionen kann man sich <a href="http://linux-sxs.org/housekeeping/lscolors.html">hier</a> anschauen. Für ganz Faule gibt es einen <a href="http://geoff.greer.fm/lscolors/">Generator</a>.</p>
	<p>Um dem Befehl <em>grep</em> etwas Farbe zu geben, muss folgende Umgebungsvariable gesetzt werden</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">GREP_OPTIONS</span>=<span style="color: #ff0000;">'--color=auto'</span> <span style="color: #007800;">GREP_COLOR</span>=<span style="color: #ff0000;">'1;32'</span></pre></div></div>

	<h3><a href="http://controlc.de/wp-content/uploads/2010/03/GREP_OPTIONS.png" class="floatbox" rev="group:912 caption:`GREP_OPTIONS`"><img class="aligncenter size-medium wp-image-1556" title="GREP_OPTIONS" src="http://controlc.de/wp-content/uploads/2010/03/GREP_OPTIONS-300x148.png" alt="" width="300" height="148" /></a>Einfacher Zugriff auf die History</h3>
	<p>Ich hatte hier schon mal was über die <a href="http://controlc.de/2009/06/10/bash-history-aufwerten/">Einstellungen der bash history</a> geschrieben. Die Einstellungen dort werden in der Profil-Datei gemacht. Wie in den Kommentaren hinzugefügt benutze ich folgendes Tastaturmapping in <em>/etc/inputrc</em></p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #ff0000;">&quot;e[5~&quot;</span>: history-search-backward
<span style="color: #ff0000;">&quot;e[6~&quot;</span>: history-search-forward</pre></div></div>

	<p>Damit kann ich mit den Tasten Bild rauf/Page up bzw. Bild runter/Page down durch die History scrollen. Das funktioniert sogar basierend auf dem, was schon auf der Kommandozeile steht. Gebe ich zum Beispiel <em>less</em> ein, dann werden mir mit den genannten Tasten nur die History-Einträge angezeigt, die mit dieser Buchstabenfolge anfangen.</p>
	<p>Damit die history gleich geschrieben wird und nicht erst beim Beenden der shell session kann in der Profil-Datei mit</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Append commands to the history every time a prompt is shown,</span>
<span style="color: #666666; font-style: italic;"># instead of after closing the session.</span>
<span style="color: #007800;">PROMPT_COMMAND</span>=<span style="color: #ff0000;">'history -a'</span></pre></div></div>

	<p>erzwungen werden, dass mit jedem Erzeugen eines neuen Prompts die history geschrieben wird.</p>
	<h3>Leichteres Admin-Leben mit Aliasen</h3>
	<p>Standardmäßig wird dem normalen Benutzer beim Aufrufen von ls die Ansicht auf dotfiles verwehrt. Mit dem Eintrag</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #ff0000;">&quot;ls=ls -a&quot;</span></pre></div></div>

	<p>wird das korrigiert. Ansonsten kann man hier Programmaufrufen feste Parameter mitgeben und auch langen Befehlszeilen Kürzel vergeben.</p>
	<h3>Zusätzliches</h3>
	<p>Möchte man zusätzliche Pfad als Standardpfad einzurichten, damit man beim Aufrufen nicht den gesamten Pfad angeben muss, dann gibt man diesen wie folgt an:</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PATH</span>=<span style="color: #007800;">$PATH</span>:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>src<span style="color: #000000; font-weight: bold;">/</span>bin</pre></div></div>

	<p>Wenn man Änderungen an den Profil-Dateien macht, dann werden diese Änderungen erst gültig, wenn die Profil-Datei erneut eingelesen wird. Das erreicht man entweder mit dem Öffnen einer neuen Terminal-Session oder aber mit dem Befehl</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">source</span> ~<span style="color: #000000; font-weight: bold;">/</span>.profile</pre></div></div>

	<h3>Fragen über Fragen</h3>
	<p><em>Wie sieht Eure Individualisierung der Kommandzeile aus? Welche Möglichkeiten habe ich vergessen zu erklären? Kanntet Ihr schon alle Möglichkeiten?</em>
</p>
]]></content:encoded>
			<wfw:commentRss>http://controlc.de/2010/03/12/bash-shell-einrichten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bash &#124; Backups mit tar</title>
		<link>http://controlc.de/2009/11/22/bash-backups-mit-tar/</link>
		<comments>http://controlc.de/2009/11/22/bash-backups-mit-tar/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 11:40:58 +0000</pubDate>
		<dc:creator>controlc.de</dc:creator>
				<category><![CDATA[allgemeine IT]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[tar]]></category>

		<guid isPermaLink="false">http://controlc.de/?p=1041</guid>
		<description><![CDATA[In einem älteren Artikel habe ich mich schon mal damit beschäftigt, wie man in *nix-basierten Betriebssystemen leicht Backups anlegen kann. Da der Bedarf bei mir wieder mal akuter wurde, haber ich mich wieder mal damit beschäftigt und möchte hier erklären, wie man was machen kann. Backup von bestimmten Dateien Häufiger möchte man, wenn man mal [...]]]></description>
			<content:encoded><![CDATA[	<p><a href="http://controlc.de/wp-content/uploads/2009/11/Bash.png" class="floatbox" rev="group:1041 caption:`Bash`"><img class="aligncenter size-medium wp-image-1063" title="Bash" src="http://controlc.de/wp-content/uploads/2009/11/Bash-300x232.png" alt="Bash" width="300" height="232" /></a>In einem <a href="http://controlc.de/2009/05/20/bash-schnelles-backup-anlegen/">älteren Artikel</a> habe ich mich schon mal damit beschäftigt, wie man in *nix-basierten Betriebssystemen leicht Backups anlegen kann. Da der Bedarf bei mir wieder mal akuter wurde, haber ich mich wieder mal damit beschäftigt und möchte hier erklären, wie man was machen kann.</p>
	<h4><span id="more-1041"></span>Backup von bestimmten Dateien</h4>
	<p>Häufiger möchte man, wenn man mal schnell etwas in einer Config-Datei etwas ändert, davon fix ein Backup anlegen. Klassisch habe ich das meist schnell mit</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cp</span> DATEI.conf DATEI.conf.orig</pre></div></div>

	<p>gelöst. Was aber passiert, wenn man dann später nochmal was ändern will respektive ein neues Backup angelegt werden soll?! Wie man dieses Problem erschlägt, habe ich schon mal in <a href="http://controlc.de/2009/05/20/bash-schnelles-backup-anlegen/">diesem Artikel</a> erklärt — das war aber nur ein Schnellschuß. Das Problem dabei ist nämlich, das man ja jeweils die alten Backups nochmal mitsichert und dadurch die Backups immer größer werden. Dies kann man durch einen Exclude-Parameter von tar auschließen. Der Befehl um in einem Verzeichnis alle Dateien zu sichern lautet also</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-cz</span> <span style="color: #660033;">--no-recursion</span> <span style="color: #660033;">--exclude</span>=backup-<span style="color: #000000; font-weight: bold;">*</span>.tar.gz <span style="color: #660033;">-f</span> backup-$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>F-<span style="color: #000000; font-weight: bold;">%</span>H-<span style="color: #000000; font-weight: bold;">%</span>M<span style="color: #7a0874; font-weight: bold;">&#41;</span>.tar.gz <span style="color: #000000; font-weight: bold;">*</span></pre></div></div>

	<h4>Backup von ganzen Pfaden inkl. der Unterverzeichnisse</h4>
	<p>In einigen Fällen will man nicht nur die Dateien in einem Verzeichnis sichern sondern lieber gleich den Inhalt gesamte Verzeichnis inklusive aller Unterverzeichnisse</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-cz</span> <span style="color: #660033;">--exclude</span>=backup-<span style="color: #000000; font-weight: bold;">*</span>.tar.gz <span style="color: #660033;">-f</span> backup-$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>F-<span style="color: #000000; font-weight: bold;">%</span>H-<span style="color: #000000; font-weight: bold;">%</span>M<span style="color: #7a0874; font-weight: bold;">&#41;</span>.tar.gz .</pre></div></div>

	<h4>Backup von Dateien bzw. Pfaden, die im gesamten System verteilt sind</h4>
	<p>Und schließlich hat man den Fall, das man alle wichtigen Dateien eines Systems sichern will, die aber über das gesamte System verteilt sind. Dies erreicht man mit einer Include-Datei</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> cvzf <span style="color: #000000; font-weight: bold;">/</span>backup-$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>F-<span style="color: #000000; font-weight: bold;">%</span>T<span style="color: #7a0874; font-weight: bold;">&#41;</span>.tar.gz <span style="color: #660033;">-T</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>backup-include-dir.conf</pre></div></div>

	<p>wobei man in die Datei <em>/etc/backup-include-dir.conf</em> alle Pfade bzw. alle Dateien reinschreibt, die gesichert werden sollen. Wichtig ist dabei nur: Pro Datei/Pfad jeweils eine Zeile.</p>
	<p>Und denkt daran: Solche Befehlszeilen eignen sich wunderbar dazu als alias definiert zu werden, damit man schnell drauf zugreifen kann, wenn man es mal braucht.
</p>
]]></content:encoded>
			<wfw:commentRss>http://controlc.de/2009/11/22/bash-backups-mit-tar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mac &#124; Console einer virtuellen Maschine remote holen</title>
		<link>http://controlc.de/2009/10/20/mac-console-einer-virtuellen-maschine-remote-holen/</link>
		<comments>http://controlc.de/2009/10/20/mac-console-einer-virtuellen-maschine-remote-holen/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 13:35:35 +0000</pubDate>
		<dc:creator>controlc.de</dc:creator>
				<category><![CDATA[allgemein]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tunnel]]></category>
		<category><![CDATA[vmware fusion]]></category>

		<guid isPermaLink="false">http://controlc.de/?p=938</guid>
		<description><![CDATA[Wie in dem Artikel SSH mit Tunnel nutzen geschrieben, habe ich mich damit beschäftigt, wie ich mir beliebige Dienste meine Heimnetzwerkes über einen SSH-Tunnel auf meinen entfernten PC holen kann. Aktuell wollte ich ein Debian in einer Virtuelle Maschine auf meinem iMac hochfahren und an dieser etwas ausprobieren. Wie ich bei VMware Fusion eine VM [...]]]></description>
			<content:encoded><![CDATA[	<p style="text-align: center;"><a href="http://controlc.de/wp-content/uploads/2009/10/Fusionsshvnc.png" class="floatbox" rev="group:938 caption:`Fusionsshvnc`"><img class="aligncenter size-full wp-image-946" title="Fusionsshvnc" src="http://controlc.de/wp-content/uploads/2009/10/Fusionsshvnc.png" alt="Fusionsshvnc" width="410" height="281" /></a></p>
	<p>Wie in dem Artikel <a href="http://controlc.de/2009/10/20/net-ssh-mit-tunneln-nutzen/">SSH mit Tunnel nutzen</a> geschrieben, habe ich mich damit beschäftigt, wie ich mir beliebige Dienste meine Heimnetzwerkes über einen SSH-Tunnel auf meinen entfernten PC holen kann. Aktuell wollte ich ein Debian in einer Virtuelle Maschine auf meinem iMac hochfahren und an dieser etwas ausprobieren. Wie ich bei VMware Fusion eine VM per Kommandozeile starte/steuere, habe ich schon in <a href="http://controlc.de/2009/06/11/mac-vmware-fusion-uber-die-kommandozeile-steuern/">VMware Fusion über die Kommandozeile steuern</a> gezeigt.<span id="more-938"></span> Ich habe mir also einen Tunnel zum SSH-Zugang des iMacs aufgebaut</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ssh</span> <span style="color: #660033;">-L</span> <span style="color: #000000;">2222</span>:192.168.1.10:<span style="color: #000000;">22</span> root<span style="color: #000000; font-weight: bold;">@</span>test.dyndns.org</pre></div></div>

	<p>und mich mit</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ssh</span> <span style="color: #660033;">-D</span> <span style="color: #000000;">2222</span> localhost</pre></div></div>

	<p>auf den iMac eingewählt. Dann fix mit</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>Application\ Support<span style="color: #000000; font-weight: bold;">/</span>VMware\ Fusion<span style="color: #000000; font-weight: bold;">/</span>vmrun start <span style="color: #000000; font-weight: bold;">/</span>Users<span style="color: #000000; font-weight: bold;">/</span>imac<span style="color: #000000; font-weight: bold;">/</span>Documents<span style="color: #000000; font-weight: bold;">/</span>Virtual\ Machines.localized<span style="color: #000000; font-weight: bold;">/</span>Debian\ Lenny\ <span style="color: #000000;">5.01</span>.vmwarevm<span style="color: #000000; font-weight: bold;">/</span>Debian\ Lenny\ <span style="color: #000000;">5.01</span>.vmx</pre></div></div>

	<p>die Debian VM gestartet.</p>
	<p>Dabei habe ich gemerkt, das ich nicht mehr die IP der VM wußte, da diese auf DHCP konfiguriert ist. Also fix die VM wieder runtergefahren und mit</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>Users<span style="color: #000000; font-weight: bold;">/</span>imac<span style="color: #000000; font-weight: bold;">/</span>Documents<span style="color: #000000; font-weight: bold;">/</span>Virtual\ Machines.localized<span style="color: #000000; font-weight: bold;">/</span>Debian\ Lenny\ <span style="color: #000000;">5.01</span>.vmwarevm<span style="color: #000000; font-weight: bold;">/</span>Debian\ Lenny\ <span style="color: #000000;">5.01</span>.vmx</pre></div></div>

	<p>die Einstellungsdatei der VM bearbeitet.</p>
	<p>Mit den zusätzlichen Parametern</p>
	<blockquote><p>RemoteDisplay.vnc.enabled = »TRUE»<br />
RemoteDisplay.vnc.port = »5901«</p></blockquote>
	<p>habe ich für genau <strong>diese</strong> VM nun einen zusätzlichen VNC-Server angeschaltet, auf den ich mich dann <strong>explizit</strong> einwählen kann.</p>
	<p>Mit der Befehlszeile</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ssh</span> <span style="color: #660033;">-L</span> <span style="color: #000000;">2901</span>:192.168.1.10:<span style="color: #000000;">5901</span> root<span style="color: #000000; font-weight: bold;">@</span>test.dyndns.org</pre></div></div>

	<p>kann ich nun also per VNC auf die Debian VM zugreifen</p>
	<p><a href="http://controlc.de/wp-content/uploads/2009/10/Screenshot-20.10.2009-14_09_16.png" class="floatbox" rev="group:938 caption:`VNC - Debian`"><img class="aligncenter size-medium wp-image-944" title="VNC - Debian" src="http://controlc.de/wp-content/uploads/2009/10/Screenshot-20.10.2009-14_09_16-300x192.png" alt="VNC - Debian" width="300" height="192" /></a></p>
	<p>und die IP-Adresse herausfinden. Mit dieser kann ich dann wiederrum einen weiteren Tunnel zum SSH-Server der VM aufbauen.</p>
	<p>Kanntet Ihr die Funktion schon?
</p>
]]></content:encoded>
			<wfw:commentRss>http://controlc.de/2009/10/20/mac-console-einer-virtuellen-maschine-remote-holen/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>mac &#124; VMware Fusion über die Kommandozeile steuern</title>
		<link>http://controlc.de/2009/06/11/mac-vmware-fusion-uber-die-kommandozeile-steuern/</link>
		<comments>http://controlc.de/2009/06/11/mac-vmware-fusion-uber-die-kommandozeile-steuern/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 09:48:04 +0000</pubDate>
		<dc:creator>controlc.de</dc:creator>
				<category><![CDATA[debian]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[vmrun]]></category>
		<category><![CDATA[vmware fusion]]></category>

		<guid isPermaLink="false">http://controlc.de/?p=621</guid>
		<description><![CDATA[Wie schon hier geschrieben, nutze ich Windows in einer Virtuellen Maschine.  Mit VMware Fusion 2.0 unterstützt auch die Mac-Variante des Desktop-Virtualisierers vmrun — einer Möglichkeit vom Hostsystem per Kommandozeile das Gastsystem zu steuern. Ich will in diesem Beitrag kurz aufzeigen, welche Möglichkeiten sich ergeben — wer es genauer wissen möchte kann bei VMware nachschauen. Zuerst [...]]]></description>
			<content:encoded><![CDATA[	<p>Wie schon <a href="http://controlc.de/2009/05/08/einrichtung-eines-backups/">hier</a> geschrieben, nutze ich Windows in einer Virtuellen Maschine.  Mit <a href="http://www.vmware.com/products/fusion/">VMware Fusion 2.0</a> unterstützt auch die Mac-Variante des Desktop-Virtualisierers <em>vmrun</em> — einer Möglichkeit vom Hostsystem per Kommandozeile das Gastsystem zu steuern. Ich will in diesem Beitrag kurz aufzeigen, welche Möglichkeiten sich ergeben — wer es genauer wissen möchte kann bei <a href="http://www.vmware.com/pdf/vix162_vmrun_command.pdf">VMware</a> nachschauen.</p>
	<p><span id="more-621"></span>Zuerst aber muß man wissen, wo man den Befehl <em>vmrun</em> finden kann — in <code>/Library/Application Support/VMware Fusion/</code></p>
	<p>Um den Befehl global ausführen zu können muß man den Pfad zur PATH-Variablen hinzufügen</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PATH</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$PATH</span>:/Library/Application Support/VMware Fusion&quot;</span></pre></div></div>

	<h3>Allgemeines</h3>
	<p>Zuerst man <em>vmrun</em> sagen mit welchem Typ er sich verbinden soll.</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">vmrun <span style="color: #660033;">-T</span> fusion</pre></div></div>

	<p>Als nächstes kommt die Authentifizierung am Gastsystem</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">vmrun <span style="color: #660033;">-T</span> fusion <span style="color: #660033;">-gu</span> USERNAME <span style="color: #660033;">-gp</span> USERPW</pre></div></div>

	<p>Nun kommen wir zu den einzelnen Kommandos, welche man absetzen kann. Als Parameter fast jeden Kommandos muß man das VMX-File der entsprechenden virtuellen Maschine angeben. Bei VMware Fusion befinden sich diese im Unterordner in <code>/Users/USERNAME/Documents/Virtual\ Machines.localized/</code> Um sich alle bekannten VMs anzeigen zu lassen nutzt man am besten</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">vmrun <span style="color: #660033;">-T</span> fusion list</pre></div></div>

	<h3>Ausführen von Programmen im Gastsystem</h3>
	<p>Am Interessantesten für mich ist die Möglichkeit Befehle direkt in der virtuellen Maschine absetzen zu können. Dafür gibt es das Kommando <em>runProgramInGuest</em>. Der komplette Syntax lautet:</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">vmrun <span style="color: #660033;">-T</span> fusion <span style="color: #660033;">-gu</span> USERNAME <span style="color: #660033;">-gp</span> USERPW runProgramInGuest ~<span style="color: #000000; font-weight: bold;">/</span>Documents<span style="color: #000000; font-weight: bold;">/</span>Virtual\ Machines.localized<span style="color: #000000; font-weight: bold;">/</span>XP<span style="color: #000000; font-weight: bold;">/</span>xp.vmx BEFEHL</pre></div></div>

	<p>Sollte die Befehlszeile etwas länger sein und mehrere Parameter enthalten, so muß der Befehl in Hochkommas gesetzt werden. Enthält wiederrum ein Parameter auch schon ein Hochkomma, so muß dem gesamten Befehl ebenso ein weiteres Hochkomma gegeben werden. Faustregel: Für jedes Hochkomma-Paar im Befehl selber muß dem gesamten Parameter selber ein extra Hochkomma hinzugegeben werden.</p>
	<p>Um, wie in <a href="http://controlc.de/2009/05/24/debian-postfix-und-relay_recipient_maps-vom-exchange-i/">diesem Beitrag</a> geschrieben, dem Active Directory meines Windows-Servers alle zur Zeit gültigen EMail-Adressen zu entlocken nutze ich folgende Befehlszeile</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>vmrun <span style="color: #660033;">-T</span> fusion <span style="color: #660033;">-gu</span> ADMIN<span style="color: #000000; font-weight: bold;">@</span>DOMAIN.DE <span style="color: #660033;">-gp</span> GANZGEHEIM runProgramInGuest ~<span style="color: #000000; font-weight: bold;">/</span>Documents<span style="color: #000000; font-weight: bold;">/</span>Virtual\ Machines.localized<span style="color: #000000; font-weight: bold;">/</span>Windows\ Server\ <span style="color: #000000;">2003</span>\ Small\ Business.vmwarevm<span style="color: #000000; font-weight: bold;">/</span>Windows\ Server\ <span style="color: #000000;">2003</span>\ Small\ Business.vmx <span style="color: #ff0000;">&quot;&quot;</span>ldifde.exe <span style="color: #660033;">-m</span> <span style="color: #660033;">-n</span> <span style="color: #660033;">-g</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;C:\Mailgw<span style="color: #000099; font-weight: bold;">\r</span>ecipient.txt&quot;</span> <span style="color: #660033;">-r</span> <span style="color: #ff0000;">&quot;(mailnickname=*)&quot;</span> <span style="color: #660033;">-l</span> proxyAddresses<span style="color: #ff0000;">&quot;&quot;</span></pre></div></div>

	<p>Wenn ich gleich den Upload noch hinzufügen will, lege ich in den Pfad c:\mailgw auf dem Windows-Server eine Batch-Datei, die mir nach und nach alles ausführt (also Extract der Emailadressen und Kopieren per pscp).</p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>vmrun <span style="color: #660033;">-T</span> fusion <span style="color: #660033;">-gu</span> ADMIN<span style="color: #000000; font-weight: bold;">@</span>DOMAIN.DE <span style="color: #660033;">-gp</span> GANZGEHEIM runProgramInGuest ~<span style="color: #000000; font-weight: bold;">/</span>Documents<span style="color: #000000; font-weight: bold;">/</span>Virtual\ Machines.localized<span style="color: #000000; font-weight: bold;">/</span>Windows\ Server\ <span style="color: #000000;">2003</span>\ Small\ Business.vmwarevm<span style="color: #000000; font-weight: bold;">/</span>Windows\ Server\ <span style="color: #000000;">2003</span>\ Small\ Business.vmx <span style="color: #ff0000;">&quot;c:\mailgw\userextract.cmd&quot;</span></pre></div></div>

	<h3>Backup einer virtuellen Maschine</h3>
	<p>Um meinen virtuelle Windows-Server zu sichern nutze ich zur Zeit <a href="http://www.acronis.de/homecomputing/products/trueimage/">Acronis Trueimage</a> innerhalb der VM und sichere auf eine externe Platte, welche per Shared Folder in die VM eingebunden ist. Das ist natürlich »von hinten durch die Brust ins Auge«, war aber auf die Schnelle das Naheliegendste. Wie in <strong><a class="row-title" title="&quot;mac | Einrichtung eines Backups&quot; bearbeiten" href="post.php?action=edit&amp;post=213">mac | Einrichtung eines Backups</a></strong> geschrieben ist es ein Wunsch von mir das Backup direkt aus OSX heraus zu starten. Dies könnte ich jetzt mit dem Absetzen eines Befehls erreichen (ob Trueimage das untersützt wäre noch zu recherchieren) oder aber ich erstelle ein Snapshot per <em>vmrun</em></p>
	
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>vmrun <span style="color: #660033;">-T</span> fusion snapshot ~<span style="color: #000000; font-weight: bold;">/</span>Documents<span style="color: #000000; font-weight: bold;">/</span>Virtual\ Machines.localized<span style="color: #000000; font-weight: bold;">/</span>Windows\ Server\ <span style="color: #000000;">2003</span>\ Small\ Business.vmwarevm<span style="color: #000000; font-weight: bold;">/</span>Windows\ Server\ <span style="color: #000000;">2003</span>\ Small\ Business.vmx MySnapshot</pre></div></div>

	<p>Zu Testen wäre jetzt, wie groß die Snapshots sind und ob die VM während der Erstellung erreichbar ist oder aber gestoppt bzw. heruntergefahren werden muß.</p>
	<p>Nutzt Ihr <em>vmrun</em> und wenn ja, wie?
</p>
]]></content:encoded>
			<wfw:commentRss>http://controlc.de/2009/06/11/mac-vmware-fusion-uber-die-kommandozeile-steuern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>debian &#124; Emails über die Kommandozeile verschicken</title>
		<link>http://controlc.de/2009/05/26/debian-emails-uber-die-kommandozeile-verschicken/</link>
		<comments>http://controlc.de/2009/05/26/debian-emails-uber-die-kommandozeile-verschicken/#comments</comments>
		<pubDate>Tue, 26 May 2009 14:07:32 +0000</pubDate>
		<dc:creator>controlc.de</dc:creator>
				<category><![CDATA[allgemeine IT]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[telnet]]></category>

		<guid isPermaLink="false">http://controlc.de/?p=425</guid>
		<description><![CDATA[Gerade wenn man viel mit Email-Servern zu tun hat oder aber seinen eigenen Server aufsetzt, ist es wichtig zu wissen, wie man diesen testen kann. Natürlich ist die Kommandozeile dafür prädestiniert. Zuerst muß man wissen, mit welchem Server man kommunizieren muß, damit Emails an eine Domain angenommen werden können server:~# host gmx.de gmx.de has address [...]]]></description>
			<content:encoded><![CDATA[	<p>Gerade wenn man viel mit Email-Servern zu tun hat oder aber seinen eigenen Server aufsetzt, ist es wichtig zu wissen, wie man diesen testen kann. Natürlich ist die Kommandozeile dafür prädestiniert.<br />
<span id="more-425"></span><br />
Zuerst muß man wissen, mit welchem Server man kommunizieren muß, damit Emails an eine Domain angenommen werden können</p>
	<p><code>server:~# <span style="color: #008000;">host gmx.de</span><br />
gmx.de has address 213.165.65.50<br />
gmx.de mail is handled by 10 mx0.gmx.net.<br />
gmx.de mail is handled by 10 mx1.gmx.net.</code></p>
	<p>Möchte man diesen Email-Server anfunken, dann macht man das mit<br />
<span style="color: #008000;"><code>telnet mx0.gmx.net 25</code></span></p>
	<p>Der Server antwortet:<br />
<code>Trying 213.165.64.100...<br />
Connected to mx0.gmx.net.<br />
Escape character is '^]'.<br />
220 mx0.gmx.net GMX Mailservices ESMTP {mx023}<br />
</code><br />
Wir stellen uns vor:<br />
<span style="color: #008000;"><code>ehlo mail.domain.de</code></span></p>
	<p>Der Server antwortet:<br />
<code>250-mx0.gmx.net GMX Mailservices<br />
250-8BITMIME<br />
250-ENHANCEDSTATUSCODES<br />
250 SIZE</code></p>
	<p>Darauf hin fangen wir an die Mail zu schreiben. Zuerst kommt der Absender:<br />
<code><span style="color: #008000;">mail from:  <span class="linkification-ext">absender@domain.de</span></span><br />
</code></p>
	<p>Der Server gibt sein ok<br />
<code>250 2.1.0 ok {mx023}</code></p>
	<p>dann der Empfänger:<br />
<span style="color: #008000;"><code>rcpt to: <span class="linkification-ext"><span class="linkification-ext">irgendwer@gmx.de</span></span></code></span></p>
	<p>wieder der Server<br />
<code>250 2.1.5 ok {mx023}</code></p>
	<p>Dann kommen wir zum eigentlichen Text<br />
<span style="color: #008000;"><code>data</code></span></p>
	<p>Der Server wieder<br />
<code>354 mx0.gmx.net Go ahead {mx023}</code></p>
	<p>wir vergeben einen Betreff<br />
<span style="color: #008000;"><code>subject: testmail</code></span></p>
	<p>anschließend kommt der eigentliche Text<br />
<code>Dies ist eine Testmail</code></p>
	<p>Abschließend ein einzelner Punkt gefolgt von einem RETURN zum Abschließen der Mail<br />
<span style="color: #008000;"><code>.</code></span></p>
	<p>Der Server bestätigt die Annahme<br />
<code>250 2.6.0 Message accepted {mx023}</code></p>
	<p>Wir sagen brav Auf Wiedersehen<br />
<span style="color: #008000;"><code>quit</code></span></p>
	<p>der Server antwortet<br />
<code>221 2.0.0 GMX Mailservices {mx023}</code></p>
	<p>und weg sind wir<br />
<code>Connection closed by foreign host.</code></p>
	<p>Das kann man nicht nur mit fremden, sondern natürlich auch mit dem eigenen Mail-Server machen. Besonders wenn man diesen gerade frisch aufsetzt, sollte man folgendes probieren:</p>
	<ol>
	<li>Verbindungsaufbau von eigenem DSL-Anschluß zu mailserver.domain.de mit fremder Emailadresse als Absender und gültigem Empfänger der eigenen Domain.</li>
	<li>Verbindungsaufbau von eigenem DSL-Anschluß zu mailserver.domain.de mit fremder Emailadresse als Absender und ungültigem Empfänger der eigenen Domain.</li>
	<li>Verbindungsaufbau von eigenem DSL-Anschluß zu mailserver.domain.de mit fremder Emailadresse als Absender und fremden Empfänger.</li>
	<li>Verbindungsaufbau von eigenem DSL-Anschluß zu mailserver.domain.de mit eigener Emailadresse der Domain als Absender und gültigem Empfänger der eigenen Domain.</li>
	<li>Verbindungsaufbau vom Server zu localhost mit obigen vier Optionen.</li>
	</ol>
	<p>So sollte man alle Varianten durchhaben, wie Mails eingeliefert werden könnten. Das Ergebnis eines jeden Tests sollte man genau untersuchen und hinterfragen, ob das genau so erwünscht war.</p>
	<p>Manchmal möchte man entweder das Verhalten prüfen, wie ein lokaler Dienst EMails einliefert. Das wird nicht immer über den SMTP-Dienst des Servers getan sondern wird direkt in den EMail-Server injiziert. Bei postfix als MTA wird der Prozeß pickup dafür genutzt. Am Einfachsten ist es den Inhalt der Email in ein Textfile mit folgendem Muster zu schreiben.<br />
<code><br />
From: &lt;<span class="linkification-ext">absender@domain.de</span>&gt;<br />
To: &lt;<span class="linkification-ext"><span class="linkification-ext">empfänger@domain.de</span></span>&gt;<br />
</code></p>
	<p><code>Subject: This is a Postfix Sendmail Test</code></p>
	<p>Dieses Textfile wird anschließend mit dem Befehl:<br />
<code># cat testfile | /usr/sbin/sendmail -t -bm -v<br />
</code>abgeschickt.
</p>
]]></content:encoded>
			<wfw:commentRss>http://controlc.de/2009/05/26/debian-emails-uber-die-kommandozeile-verschicken/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

