<?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>ubuntuverse.at &#187; bash</title>
	<atom:link href="http://www.ubuntuverse.at/tag/bash/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ubuntuverse.at</link>
	<description>Berichte aus dem Ubuntu Universum</description>
	<lastBuildDate>Tue, 01 Jun 2010 09:50:57 +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>Dateien in Bildern verstecken mit steghide</title>
		<link>http://www.ubuntuverse.at/2009/11/27/dateien-in-bildern-verstecken-mit-steghide/</link>
		<comments>http://www.ubuntuverse.at/2009/11/27/dateien-in-bildern-verstecken-mit-steghide/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 05:12:45 +0000</pubDate>
		<dc:creator>Bernhard Essl</dc:creator>
				<category><![CDATA[Konsole]]></category>
		<category><![CDATA[Programme]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[steghide]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.ubuntuverse.at/?p=1817</guid>
		<description><![CDATA[Verschlüsselung ist eine feine Sache aber manchmal möchte man noch zusätzlich Dateien verstecken. Eine Möglichkeit wäre mittels Steganographie eine Datei in einem Bild zu verstecken und dann später aus dem Bild die Datei zu extrahieren. Mit dem Programm steghide ist dies möglich. steghide befindet sich in den Ubuntu Sourcen und kann mit apt installiert werden: [...]]]></description>
			<content:encoded><![CDATA[<p>Verschlüsselung ist eine feine Sache aber manchmal möchte man noch zusätzlich Dateien verstecken. Eine Möglichkeit wäre mittels <a href="http://de.wikipedia.org/wiki/Steganographie">Steganographie</a> eine Datei in einem Bild zu verstecken und dann später aus dem Bild die Datei zu extrahieren.<br />
Mit dem Programm <em>steghide</em> ist dies möglich.</p>
<p>steghide befindet sich in den Ubuntu Sourcen und kann mit apt installiert werden:</p>
<pre>sudo aptitude install steghide</pre>
<p>Nun kann die Datei die man verstecken möchte (geheim.txt) in ein Bild (img_23.jpg) geschrieben werden. Man muss dazu ein Passwort angeben.</p>
<pre>steghide embed --embedfile geheim.txt --coverfile img_23.jpg
Enter passphrase:
Re-Enter passphrase:
embedding "geheim.txt" in "img_23.jpg"... done
</pre>
<p>später kann aus dem Bild, nach Eingabe des Passwortes die Datei wieder extrahiert werden.</p>
<pre>steghide extract --stegofile img_23.jpg
Enter passphrase:
wrote extracted data to "geheim.txt".
</pre>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.ubuntuverse.at/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntuverse.at/2009/11/27/dateien-in-bildern-verstecken-mit-steghide/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Diese Woche in der Konsole #10</title>
		<link>http://www.ubuntuverse.at/2009/11/15/diese-woche-in-der-konsole-10/</link>
		<comments>http://www.ubuntuverse.at/2009/11/15/diese-woche-in-der-konsole-10/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 09:41:26 +0000</pubDate>
		<dc:creator>Bernhard Essl</dc:creator>
				<category><![CDATA[Konsole]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[dwik]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[rsync]]></category>

		<guid isPermaLink="false">http://www.ubuntuverse.at/?p=1803</guid>
		<description><![CDATA[BASH Befehlsübersicht Um alle Befehle der BASH Tools und Programme die in den Pfaden der Umgebungsvariable PATH sich befinden, anzeigen zu lassen reicht 2 mal Tabulator und ein y (oder j) in der Konsole. Online GeoIP Daten einer IP abfragen. Zurück kommt ein json-formatierter String. curl -s "http://geoip.pidgets.com?ip=212.69.178.148&#038;format=json" Eine ganz bestimmte Zeile einer Datei anzeigen [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li><del datetime="2009-11-17T13:11:14+00:00">BASH</del> Befehlsübersicht
<p>Um alle <del datetime="2009-11-17T13:11:14+00:00">Befehle der BASH</del> Tools und Programme die in den Pfaden der Umgebungsvariable PATH sich befinden,  anzeigen zu lassen reicht 2 mal Tabulator und ein y (oder j) in der Konsole.</li>
<li>
Online GeoIP Daten einer IP abfragen. Zurück kommt ein json-formatierter String.</p>
<pre>curl -s "http://geoip.pidgets.com?ip=212.69.178.148&#038;format=json"</pre>
</li>
<li>Eine ganz bestimmte Zeile einer Datei anzeigen lassen.
<pre>head -n 23 /etc/passwd | tail -n 1</pre>
<p>oder mit sed</p>
<pre>sed -n 23p /etc/passwd</pre>
</li>
<li>
Eine Datei in mehrere aufteilen. Neue Dateien enthalten jeweils 10 Zeilen und beginnen mit dem<br />
Namen neu-.</p>
<pre>split --lines 10 /etc/passwd neu-</pre>
</li>
<li>Dateien rekursiv durchsuchen mit grep und nur Dateinamen wo etwas gefunden wurde ausgeben.
<pre>grep -r -l suche-nach *</pre>
</li>
<li>
Fortschritts-Anzeige (progress bar) bei Dateien abgleichen mit rsync.</p>
<pre>rsync -avx --progress --stats "/pfad/original/" "/pfad/kopie/"</pre>
</li>
<li>
Eingebauten CPU Namen ermitteln.</p>
<pre>grep "model name" /proc/cpuinfo |uniq</pre>
</li>
</ol>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.ubuntuverse.at/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntuverse.at/2009/11/15/diese-woche-in-der-konsole-10/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fallgruben in BASH</title>
		<link>http://www.ubuntuverse.at/2009/10/20/fallgruben-in-bash/</link>
		<comments>http://www.ubuntuverse.at/2009/10/20/fallgruben-in-bash/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 05:23:49 +0000</pubDate>
		<dc:creator>Bernhard Essl</dc:creator>
				<category><![CDATA[Konsole]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.ubuntuverse.at/?p=1726</guid>
		<description><![CDATA[Immer wieder bin ich angenehm überrascht wie viele Aufgaben ich mit BASH in oft einer (langen) oder nur wenigen Zeilen lösen kann. Warum schreibe ich dann fast alles in Skriptsprachen wie Ruby, Python oder Perl? Ganz einfach weil die Syntax einfacher zu merken ist und BASH doch einige Eigenheiten hat, die es zu merken gilt. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="post_img" src="http://www.ubuntuverse.at/wp-content/85504626_9a784bf601_m.jpg" alt="cat hunting the bash" title="cat hunting the bash" width="240" height="192" class="alignnone size-full wp-image-1728" /> Immer wieder bin ich angenehm überrascht wie viele Aufgaben ich mit BASH in oft einer (langen) oder nur wenigen Zeilen lösen kann. Warum schreibe ich dann fast alles in Skriptsprachen wie Ruby, Python oder Perl?<br />
Ganz einfach weil die Syntax einfacher zu merken ist und BASH doch einige Eigenheiten hat, die es zu merken gilt. </p>
<p>Darum hier ein Versuch sämtliche gern gemachte Fehler niederzuschreiben. Ich würde mich über Kommentare eurer Fallgruben von euch freuen.<br />
<span id="more-1726"></span></p>
<ol>
<li><strong>whitespaces und wildcards</strong>
<pre>
mv $file_old $file_new # falsch
</pre>
<p>Das kann bei Dateinamen mit Leerzeichen oder wildcards zu Problemen führen, wenn man sich nicht sicher ist welchen Inhalt eine Variable hat, sollte man sie in Anführungszeichen setzen.</p>
<pre>
mv "$file_old" "$file_new"
</pre>
<p>Nun können in $file_old und $file_new Leerzeichen und wildcards wie * oder ? oder [...] verwendet werden.
</li>
<li><strong>runde Klammern werden nicht erkannt</strong>
<p>Ich bin schon öfter über Posting gestolpert wo das Skript mit dieser Meldung abstürzte:</p>
<pre>Syntax error: "(" unexpected</pre>
<p>Das liegt dann meistens daran das keine BASH sondern eine abgemagerte Shell wie <em>dash</em> verwendet wurde.<br />
Welche Shell verwendet wird kann über $SHELL abgefragt werden:</p>
<pre>echo $SHELL</pre>
</li>
<li><strong>Variablen-Deklaration</strong>
<pre>
$ubuntu="super" # falsch
ubuntu = "super" # falsch
ubuntu ="super" # falsch
</pre>
<p>in BASH werden einer Variable, ohne $ und ohne Zwischenabstände Werte zugewiesen.</p>
<pre>
ubuntu="super"
</pre>
</li>
<li><strong>lesen und schreiben in die selbe Datei</strong>
<p>Es ist nicht möglich in die selbe Datei, über eine pipe zu schreiben, von der gelesen wird. In den meisten Fällen bleibt dann eine 0 Byte große Datei über.</p>
<pre>cat datei | sed s/foo/bar/ > datei # falsch</pre>
<p>Eine Lösung wäre mit einer temporären Datei zuarbeiten und diese mit der Originaldatei zu überschreiben</p>
<pre>sed 's/foo/bar/g' datei > tmpdatei &#038;&#038; mv tmpdatei datei</pre>
</li>
<li><strong>Globing verwenden</strong>
<p>Ein gern gemachter Fehler ist das verwenden von subshells in loops</p>
<pre>
for x in `ls *.jpg`; do # falsch
</pre>
<p>Hat einer der Dateinamen whitespaces wird es hier zu Fehlern kommen (siehe 1). Außerdem wird ein externes Kommando <em>ls</em> unnötig aufgerufen.<br />
In BASH sollte darum für solche Aufgaben das BASH interne Glob verwendet werden.</p>
<pre>
for i in *.jpg; do
</pre>
</li>
<li><strong>Verwenden absoluter Pfade bei externen Programmen</strong>
<p>Oft werden externe Programme in BASH ohne absoluten Pfad aufgerufen, sehr sicher ist das allerdings nicht.</p>
<pre>dateien=`ls /home/userin/`</pre>
<p>Das Problem hier könnte sein das jemand mutwillig ein Programm mit den Namen <em>ls</em> erzeugt und nicht mehr <em>/bin/ls</em> wie gedacht, sondern ein manipuliertes <em>ls</em> ausgeführt wird.<br />
Ein besserer Ansatz mit einem absoluten Pfad:</p>
<pre>ls="/bin/ls"
dateien=`$ls /home/userin/`
</pre>
</li>
</ol>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.ubuntuverse.at/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntuverse.at/2009/10/20/fallgruben-in-bash/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Diese Woche in der Konsole #9</title>
		<link>http://www.ubuntuverse.at/2009/09/13/diese-woche-in-der-konsole-9/</link>
		<comments>http://www.ubuntuverse.at/2009/09/13/diese-woche-in-der-konsole-9/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 09:30:16 +0000</pubDate>
		<dc:creator>Bernhard Essl</dc:creator>
				<category><![CDATA[Konsole]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[diff]]></category>
		<category><![CDATA[dwik]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nmap]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[timestamp]]></category>
		<category><![CDATA[tinyurl]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.ubuntuverse.at/?p=1620</guid>
		<description><![CDATA[Mit diff Unterschiede zwischen zwei Verzeichnissen anzeigen. $ diff folder1 folder2 Das ganze geht auch über zwei per ssh erreichbare Server. $ diff]]></description>
			<content:encoded><![CDATA[<ol>
<li>
Mit <em>diff</em> Unterschiede zwischen zwei Verzeichnissen anzeigen.</p>
<pre>$ diff folder1 folder2</pre>
<p>Das ganze geht auch über zwei per ssh erreichbare Server. </p>
<pre>$ diff <(ssh server01 "ls /tmp/") <(ssh server02 "ls /tmp/")
1,8d0
< lost+found
< mysql.sock
< orbit-root
</pre>
</li>
<li>tinyurl von der Konsole aus verwenden.
<pre>$ curl -s http://tinyurl.com/create.php?url=http://www.ubuntuverse.at/ | \
grep -o "http:\/\/tinyurl.com\/[a-z0-9][a-z0-9]*" | uniq
</pre>
</li>
<li>
Mit <em>time</em> ist es möglich die Zeitdauer eines Befehls oder Skripts anzuzeigen (benchmark).</p>
<pre>
$ time ruby script.rb

real    0m0.017s
user    0m0.008s
sys     0m0.004s
</pre>
</li>
<li>Datum in timestamp umwandeln.
<pre>$ date --utc --date "2009-09-09 09:09:09" +%s
1252487349
</pre>
</li>
<li>Das gesamte interne Netzwerk nach erreichbaren IPs durchsuchen. <em>nmap</em> versucht dabei auch den Hersteller der Netzwerkkarte zu ermitteln.
<pre>$ sudo nmap -sP 192.168.0.0/24

Starting Nmap 4.76 ( http://nmap.org ) at 2009-09-03 18:28 CEST
Host 192.168.1.122 appears to be up.
MAC Address: 00:12:52:73:85:4C (Apple)
Host 192.168.1.181 appears to be up.
MAC Address: 00:0E:A8:D0:87:DE (Cisco Linksys)
</pre>
</li>
</ol>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.ubuntuverse.at/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntuverse.at/2009/09/13/diese-woche-in-der-konsole-9/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
