<?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>Jörg Bösche - Web &#38; Fotografie &#187; console</title>
	<atom:link href="http://blog.joergboesche.de/tag/console/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.joergboesche.de</link>
	<description>(Szene-)Fotografie - Webdevelopment - Suchmaschinenoptimierung - Privat</description>
	<lastBuildDate>Sat, 21 Jan 2012 20:48:44 +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>CakePHP-Shells als Cronjob auf Shared-Server einrichten</title>
		<link>http://blog.joergboesche.de/cakephp-shells-als-cronjob-auf-shared-server-ausfuehren</link>
		<comments>http://blog.joergboesche.de/cakephp-shells-als-cronjob-auf-shared-server-ausfuehren#comments</comments>
		<pubDate>Sun, 13 Dec 2009 22:18:44 +0000</pubDate>
		<dc:creator>Jörg</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[bake]]></category>
		<category><![CDATA[bakery]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[cronjob]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[http-cronjob]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[shared]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[webserver]]></category>

		<guid isPermaLink="false">http://blog.joergboesche.de/?p=626</guid>
		<description><![CDATA[Bei der Entwicklung von Internetauftritten wird es immer wichtiger mit nächtlichen Cronjobs zu arbeiten, diese einem die Arbeit der Datenvalidierung oder Datenerfassung erleichtern. Da die Kunden nicht immer über einen Managed- oder RootServer verfügen, ist es kaum möglich mit der CakePHP-Console zu arbeiten. Über die CakePHP-Console lassen sich Models, Views, Controller und auch die wichtigen [...]]]></description>
			<content:encoded><![CDATA[<p> 	Bei der Entwicklung von Internetauftritten wird es immer wichtiger mit nächtlichen Cronjobs zu arbeiten, diese einem die Arbeit der Datenvalidierung oder Datenerfassung erleichtern.</p>
<p>Da die Kunden nicht immer über einen Managed- oder RootServer verfügen, ist es kaum möglich mit der CakePHP-Console zu arbeiten. Über die CakePHP-Console lassen sich Models, Views, Controller und auch die wichtigen Shells entwickeln.</p>
<p>Eine Shell ist dazu da, um kommandozeilenbaiserende Skripte zu schreiben, diese aber vom Benutzer entfernt bleiben.<br />
Wie oben bereits angesprochen, z.B. die Datenvalidierung oder ein nächtlicher Export von Datensätzen als CSV-Datei.<br />
Ein Export der Datenbank kann u.a. bei APIs oder Shopsystemen sehr vorteilhaft sein.</p>
<p>Um auch die CakePHP-Shell auf einem Shared-Host / Shared-Server via HTTP-Request ausführen zu können,<br />
muss der PHP-Befehl "exec()" aktiviert sein. Darüber lassen sich in einem PHP-Skript diverse Kommandozeilen starten.</p>
<p>In unserem Fall auch die CakePHP-Shell und das als HTTP-Request.<br />
Natürlich ist es wichtig, dass ihr eure PHP-Skripte dementsprechend vor Fremdeingriffe schützt.<br />
Eine .htaccess Authentifizierung oder PHP_AUTH-Methode wäre hier angebracht. Viele Cronjob-Dienste können die HTTP-Requests auch mit einem Benutzernamen und Passwort übersenden. Das PHP-Modul cUrl macht es möglich.</p>
<p><strong>Wie führe ich die CakePHP-Shell in einem PHP-Skript aus?</strong><br />
Beim Hoster all-inkl muss der exec()-Befehl vorher durch eine .htaccess mit " AddHandler php-fastcgi .php" <span id="more-626"></span>Datei freigeschaltet werden.</p>
<p>Die Cronjob.php-Datei legt ihr in das Verzeichnis "/app/webroot/_cronjob/" ab.<br />
Den Ordner "_cronjob" müsst ihr vorher anlegen. - Darin wird auch die "log.txt" geschrieben.</p>
<p>Bei " here_comes_the_vendors_shell_file" wird die CakePHP-Shell-Datei angegeben. Z.B.: csv_export, diese im Verzeichnis /app/vendors/shells/csv_export.php" liegt.</p>
<blockquote><p>&lt;?php<br />
$app_dir = dirname(dirname(dirname(__FILE__))); // app Path<br />
$cake_dir = dirname(dirname(dirname(dirname(__FILE__)))); // cake-core Path<br />
$logfile = $app_dir."/webroot/_cronjobs/log.txt"; // Log-File Path define(RECEIVER,'email@domain.de');<br />
define(EMAIL_SUBJECT, 'CakePHP SHELL Cronjob');</p>
<p>$command = "php ".$cake_dir."/cake/console/cake.php -app ".$app_dir."/ -core ".$cake_dir."/cake/ -i cake here_comes_the_vendors_shell_file &gt; ".$logfile; // exec command with cakephp-shell exec($command);</p>
<p>// get log.txt content for e-mail-body<br />
$msg = file_get_contents($logfile);<br />
mail(RECEIVER,EMAIL_SUBJECT,$msg); // send mail to defined receiver<br />
?&gt;</p></blockquote>
<p>Die Ausgabe der Shell wird in eine Datei umgelenkt und bei jedem Aufruf neu geschrieben.<br />
Eine E-Mail an einen oben definierten Empfänger wird mit genau diesem Inhalt verschickt.</p>
<p><strong>Wie führe ich die CakePHP-Shell auf einem Managed- oder RootServer aus?</strong><br />
Hierzu gibt es eine sehr ausführliche Dokumentation auf <a title="CakePHP-Shells als Cronjob ausführen" href="http://book.cakephp.org/de/view/846/Running-Shells-as-cronjobs" target="_blank" rel="nofollow">book.cakephp.org</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.joergboesche.de/cakephp-shells-als-cronjob-auf-shared-server-ausfuehren/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Befehle unter SSH Serververbindung</title>
		<link>http://blog.joergboesche.de/befehle-unter-ssh-serververbindung</link>
		<comments>http://blog.joergboesche.de/befehle-unter-ssh-serververbindung#comments</comments>
		<pubDate>Tue, 25 Nov 2008 20:34:11 +0000</pubDate>
		<dc:creator>Jörg</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Webentwicklung & Programmierung]]></category>
		<category><![CDATA[befehle]]></category>
		<category><![CDATA[commands]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[webserver]]></category>

		<guid isPermaLink="false">http://blog.joergboesche.de/?p=329</guid>
		<description><![CDATA[Seit kurzem lerne ich via SSH diverse Aktionen auf Webservern auszuführen, um Serverwechsel schnell und effektiv durchzuführen. Muss man zum Beispiel ein Webprojekt mit rund 30.000 Dateien vom Server via FTP (File Transfer Protokoll) laden, dauert es zudem sehr lange und oft treten fehlerhafte Dateien auf. Mittels SSH ist dies kein Problem mehr, denn es [...]]]></description>
			<content:encoded><![CDATA[<p> 	Seit kurzem lerne ich via SSH diverse Aktionen auf Webservern auszuführen, um Serverwechsel schnell und effektiv durchzuführen.</p>
<p>Muss man zum Beispiel ein Webprojekt mit rund 30.000 Dateien vom Server via FTP (File Transfer Protokoll) laden, dauert es zudem sehr lange und oft treten fehlerhafte Dateien auf.<br />
Mittels SSH ist dies kein Problem mehr, denn es lassen sich gesamte Verzeichnisse schnell packen und downloaden.</p>
<p>Nachdem das Verzeichnis worin das Webprojekt liegt gepackt ist, kann dies gedownloaded werden und auf dem neuen Server hochgeladen werden.</p>
<p>Liegt das Archiv im korrekten Verzeichnis lässt sich schnell via "unzip dateiname.zip" das Archiv entpacken und das Webprojekt liegt schon mal innerhalb kurzer Zeit komplett auf dem neuen Server.</p>
<p>Auch mySQL-Datenbanken lassen sich schnell via mysqldump zusammenfassen und wieder einspielen.<br />
Mit dem folgenden Befehl lässt sich eine *.sql Datei innerhalb von Sekunden einspielen.</p>
<blockquote>
<pre class="alt2" style="border: 1px inset; margin: 0px; padding: 6px; overflow: auto; width: 440px; height: 34px; text-align: left;" dir="ltr"><code>mysql -u username -p -h localhost datenbankname &lt; dump.sql</code></pre>
</blockquote>
<p>Mit diesem Befehl lässt sich schnell ein mySQL-Dump von der gewünschten Datenbank erzeugen.</p>
<blockquote>
<pre class="alt2" style="border: 1px inset; margin: 0px; padding: 6px; overflow: auto; width: 440px; height: 34px; text-align: left;" dir="ltr"><code> mysqldump -u username -p password tablename >  file.sql</code></pre>
</blockquote>
<p>Da ich ständig nach Commands (Befehlen) unter SSH suche, hier ein paar Befehle zusammengefasst.<br />
Ansonsten lässt sich per "--help" in der Console, die ganzen Befehle ausgeben.</p>
<h2><strong>SSH Befehle / Commands:</strong></h2>
<p><strong>ls</strong><br />
gibt den aktuellen Verzeichnis- / Ordnerinhalt aus</p>
<p><strong>ls Ordnername</strong><br />
gibt den Inhalt des spezifischen Ordners aus</p>
<p><strong>ls –l</strong><br />
gibt alle Informationen, Besitzrechte, Benutzergruppe, Dateirechte, ...  über Dateien des Ordners aus</p>
<p><strong>ls –a</strong><br />
zeigt versteckte Systemdateien im Ordner</p>
<p><strong>cd Ordner</strong><br />
wechselt in den angegebenen Ordner</p>
<p><strong>cd ..</strong><br />
verlässt den geöffneten Ordner und geht in den übergeordneten Ordner zurück</p>
<p><strong>cp Datei_1 Datei_2</strong><br />
Kopiert Datei1 nach Datei2</p>
<p><strong>cp Datei Ordner/Datei_2</strong><br />
kopiert Datei1 in Ordner mit dem Namen Datei_2</p>
<p><strong>mv Datei Ordner/</strong><br />
Verschiebt Datei in den Ordner</p>
<p><strong>mv Datei_1 Datei_2</strong><br />
Benennt Datei_1 in Datei_2 um</p>
<p><strong>mkdir Ordnername</strong><br />
erzeugt einen neuen Ordner</p>
<p><strong>rm Datei</strong><br />
entfernt die angegebene Datei</p>
<p><strong>rm Ordnername</strong><br />
entfernt den Ordner unter der Bedingung, dass er komplette leer ist</p>
<p><strong>rm –-recursive</strong><br />
entfernt den Ordner mit gesamten Inhalt, ohne Rücksicht auf gefüllte Ordner</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.joergboesche.de/befehle-unter-ssh-serververbindung/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

