<?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>Thomas Falkner &#187; Tools</title>
	<atom:link href="http://blog.thomas-falkner.de/category/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thomas-falkner.de</link>
	<description>Marginalien zu  Linux, Webdesign und Softwareentwicklung</description>
	<lastBuildDate>Thu, 29 Mar 2012 11:51:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>cURL mit 6 praktischen Beispielen erkl&#228;rt</title>
		<link>http://blog.thomas-falkner.de/2011/01/25/curl-mit-6-praktischen-beispielen-erklaert/</link>
		<comments>http://blog.thomas-falkner.de/2011/01/25/curl-mit-6-praktischen-beispielen-erklaert/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 09:32:13 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=294</guid>
		<description><![CDATA[cURL ist ein Open Source Kommandozeilentool, mit dem sich aus Shell- oder Batchskripten heraus Dateien &#252;ber Protokolle wie http, https, ftp, gopher, sftp, ftps oder scp &#252;bertragen lassen. cURL leistet mir gute Dienste bei der Entwicklung von Websites. Mit cURL lassen sich Websites fernsteuern und testen. Anhand einiger Beispiele m&#246;chte ich den gro&#223;en Vorteil von [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://curl.haxx.se/">cURL</a> ist ein Open Source Kommandozeilentool, mit dem sich aus Shell- oder Batchskripten heraus Dateien &#252;ber Protokolle wie http, https, ftp, gopher, sftp, ftps oder scp &#252;bertragen lassen. cURL  leistet mir gute Dienste bei der Entwicklung von Websites. Mit cURL lassen sich Websites fernsteuern und testen. Anhand einiger Beispiele m&#246;chte ich den gro&#223;en Vorteil von cURL demonstrieren.</p>
<p><span id="more-294"></span></p>
<h2>1. Websites auslesen</h2>
<p><code>curl http://example.com/index.html</code><br />
Mit diesem Kommando wird die Datei index.html ausgelesen und auf der Standardausgabe ausgegeben.<br />
M&#246;chten wir die Datei unter dem Namen savedpage.html abspeichern, benutzen wir dazu folgenden Befehl:</p>
<p><code>curl -o savedpage.html http://www.example.com/</code></p>
<p>Erfordert eine Website die Anmeldung &#252;ber den HTTP-Authentifizierungsmechanismus, lassen sich &#252;ber cURL auch Benutzername und Passwort &#252;bergeben.</p>
<p><code>curl -u username:password http://www.example.com/</code></p>
<p>Wenn sich eine URL ge&#228;ndert hat, machen viele Webmaster von der M&#246;glichkeit gebrauch auf die neue Adresse umzuleiten. Da in der Standardkonfiguration cURL Weiterleitungen nicht folgt, m&#252;ssen wir in diesem Fall den Parameter -L &#252;bergeben.</p>
<p><code>curl -L http://www.example.com/</code></p>
<h2>2. URL mit variablen GET-Parameter auslesen</h2>
<p>cURL erm&#246;glicht die &#220;bergabe eines regul&#228;ren Ausdrucks als GET-Parameter. Nehmen wir an ein Website w&#228;re &#252;ber ein CMS betrieben und b&#246;te die einzelnen Dokumente &#252;ber URLs nach folgenden Schema an.<br />
<code></p>
<p>http://example.com/pages.php?id=1</p>
<p>http://example.com/pages.php?id=17</p>
<p>http://example.com/pages.php?id=99</p>
<p></code></p>
<p>An cURL l&#228;sst sich der Parameter id als regul&#228;rer Ausdruck &#252;bergeben, um alle ids und damit Dokumente in einen bestimmten Bereich zu erfassen.</p>
<p><code>curl -o pages#1.html http://example.com/pages.php?id=[1-99]</code></p>
<p>Damit weisen wir cURL an alle Dokumente mit den ids 1-99 aufzurufen und in den Dateien page01.html bis page99.html in das Verzeichnis aus dem cURL aufgerufen wurde zu schreiben. Doch was passiert, wenn zum Beispiel die Datei http://example.com/pages.php?id=42 nicht existieren sollte? Hier hebt cURL sich in der Standardkonfiguration durch ein besonders intelligentes Verhalten hervor: Liefert die aufgerufene URL den Fehler 404 &#8211; Dokument nicht gefunden &#8211; zur&#252;ck, f&#228;hrt cURL mit der n&#228;chsten id fort, ohne dabei die Datei page42.html anzulegen.  </p>
<h2>3. HTTP-Header auslesen</h2>
<p><code>curl --head http://www.google.com/</code><br />
Mit dem Parameter &#8211;head weisen wir cURL an den HTTP-Header auf die Standardausgabe zu schreiben.<br />
M&#246;chten wir den Header in die Datei header.txt schreiben, lie&#223;e sich das zum einen durch Umleitungsoperatoren der Shell erreichen oder ganz ohne Unterst&#252;tzung der Shell durch den Parameter &#8211;dump-header.</p>
<p><code>curl --dump-header headers.txt http://www.google.com/</code></p>
<h2>4. cURL und FTP</h2>
<p>Neben vielen weiteren Protokollen kann cURL auch mit FTP-Servern sprechen.</p>
<p><code>curl ftp://username:password@example.com</code></p>
<p>Damit weisen wir cURL an den Index des Hauptverzeichnisses auszugeben. Benutzername und Passwort werden direkt in der URL kodiert.<br />
M&#246;chten wir das Unterverzeichnis images auf dem FTP-Server auflisten, gen&#252;gt es das Verzeichnis an die URL zu h&#228;ngen:</p>
<p><code>curl ftp://username:password@example.com/images/</code></p>
<p>Mit cURL ist auch ein Upload auf einen FTP-Server m&#246;glich, dazu &#252;bergeben wir den Parameter -T gefolgt vom Dateinamen bzw. vollst&#228;ndigen Dateipfad.   </p>
<p><code>curl -T uploadfile.txt -u username:password ftp://example.com/files/myfile.txt</code><br />
Mit diesem Kommando kopiert cURL die Datei uploadfile.txt auf den FTP-Server in das Verzeichnis files unter den Dateinamen myfile.txt.</p>
<h2>5. Formulare mit cURL ausf&#252;llen</h2>
<p>Nehmen wir an ein Formular auf einer Website h&#228;tte folgenden Aufbau:<br />
<code></p>
<form method="post" action="add.php">
<input type="text" name="item"/>
<input type="text" name="category"/>
<input type="submit" name="submit" value="speichern"/>
</form>
<p></code></p>
<p>Der Parameter -d weist cURL an die Daten als application/x-www-form-urlencoded formatierte Zeichenkette an den Server zu &#252;bergeben. </p>
<p><code>curl -d "item=Book&#038;category=SiFi&#038;submit=speichern"  http://www.example.com/add.php</code></p>
<p>Die einzelnen Input-Felder des Formulars werden in der URL mit dem Namen angesprochen, ihr Wert wird &#252;ber den Operator = zugewiesen. Die Verkn&#252;pfung der einzelnen Felder erfolgt mit dem &#038;-Operator. Wir bef&#252;llen im Beispiel das Formularfeld item also mit &#8220;Book&#8221; und das Feld category mit &#8220;SiFi&#8221;. </p>
<h2>6. Referer &#038; User Agent</h2>
<p>HTTP-Request k&#246;nnen das Attribut referer tragen, das dem Webserver Aufschluss dar&#252;ber gibt, &#252;ber welche URL die aktuelle Ressource aufgerufen wurde.  Mit cURL l&#228;sst sich das referer-Attribut nach belieben setzen, indem wir den Parameter -e gefolgt von der augenscheinlich verweisenden URL setzen.</p>
<p><code>curl -e http://refferingsite.com  http://www.example.com/</code></p>
<p>Alle HTTP-Anfragen sollten das Attribut User-Agent aufweisen, das dem Server mitteilt &#252;ber welchen Client der Zugriff erfolgt. Das Attribut User-Agent erm&#246;glicht es zum Beispiel eine spezielle Version einer Website f&#252;r das iPhone oder andere Ger&#228;te auszuliefern. </p>
<p>Um einen bestimmten User-Agent zu simulieren, k&#246;nnen wir den Parameter -A gefolgt vom angeblichen <a href="http://www.user-agents.org/">User-Agent</a> setzen. Um uns zum Beispiel als iPhone auszugeben, benutzen wir folgenden Befehl:</p>
<p><code>curl -A "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3"  http://www.example.com</code></p>
<p>Bei entsprechenden Feedback zum Artikel, werde ich gerne weitere Anwendungen f&#252;r cURL aufzeigen. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2011/01/25/curl-mit-6-praktischen-beispielen-erklaert/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Elegant viele Dateien mit curl laden</title>
		<link>http://blog.thomas-falkner.de/2010/12/09/elegant-viele-dateien-mit-curl-laden/</link>
		<comments>http://blog.thomas-falkner.de/2010/12/09/elegant-viele-dateien-mit-curl-laden/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 13:00:45 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=284</guid>
		<description><![CDATA[Curl bietet die interessante M&#246;glichkeit Dateien durch Muster zu spezifizieren. Liegen zum Beispiel im Verzeichnis Bilder, die von 00.jpg bis 100.jpg benannt sind, lassen sich diese mit nur einer Zeile curl downloaden: curl http://host.tld/images/[00-100].jpg -o "img#1.jpg" Der Parameter -o weist an, dass curl die Dateien nicht auf der Standardausgabe ausgeben, sondern in eine Datei schreiben [...]]]></description>
			<content:encoded><![CDATA[<p>Curl bietet die interessante M&#246;glichkeit Dateien durch Muster zu spezifizieren. Liegen zum Beispiel im Verzeichnis Bilder, die von 00.jpg bis 100.jpg benannt sind, lassen sich diese mit nur einer Zeile curl downloaden:</p>
<p><code><br />
curl http://host.tld/images/[00-100].jpg -o "img#1.jpg"<br />
</code></p>
<p>Der Parameter <tt>-o</tt> weist an, dass curl die Dateien nicht auf der Standardausgabe ausgeben, sondern in eine Datei schreiben soll. Der Dateiname wird im Beispiel durch den Ausdruck &#8220;img#2.jpg&#8221; angegeben. Die Bilder werden dann mit dem Namen img00.jpg bis img100.jpg gespeichert. Das w&#228;re zwar auch mit wget und eine Schleife gegangen, doch curl bietet hier einen m.E. eleganteren Weg.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2010/12/09/elegant-viele-dateien-mit-curl-laden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

