Archive for the 'Snipped' Category

21
Jan

Variablen in der Shell (bash)


# Deklarieren der Variable foo. Das Gleichzeichen
#sollte ohne Leerzeichen verwendet werden
foo=bar

# Einen String mit Leerzeichen muss man in
# quotes setzen
foo="ein String mit Leerzeichen"

# Gibt bar aus
echo $foo

# Backticks führen den Befehl aus
foo=`date +%Y-%m-%d`

# Gibt z.B. 2008-01-23 aus
echo $foo

# Konkatenieren kann man in der Shell
# ohne einen Operator
foo=`date +%Y-%m-%d`".tgz"

# Funktioniert in diesem Fall auch, da
# kein Leerzeichen vorkommt
foo=`date +%Y-%m-%d`.tgz

# Gibt z.B. 2008-01-23.tgz aus
echo $foo

# Erzeugt die Datei 2008-01-23.tgz
touch ${foo}.txt

# Gibt 20 aus
echo ${foo:0:2}

Auch das escapen von Sonderzeichen will gelernt sein. Interessante Beispiele findet man unter Shell Quoting verstehen

11
Jul

php.ini bei domainfactory

Beim Provider domainfactory besteht die Möglichkeit eine eigene php.ini zu verwenden. Dazu muss eine php.ini Datei in jedes Verzeichnis kopiert werden, in dem es Auswirkung haben soll. Das folgende Skript erledigt das Kopieren. In Verzeichnisse mit Quota kann die Datei allerdings nicht kopiert werden.

<?php
// Kopiere die Datei php.ini in jedes Verzeichnis
passthru("find . -type d -exec cp php.ini {} \;");
?>

Die aktuelle php.ini von domainfactory kann man mit folgendem Skript auslesen:

<?php
header("Content-type: text/plain");
readfile("/usr/local/lib/php.ini");
?>

18
Apr

HTML in PDF wandeln mit PHP und htmldoc


$filename = '';

header("Content-Type: application/pdf");
header("Content-Disposition: attachment; filename=convertedDocument.pdf");

passthru("/usr/bin/htmldoc -t pdf12 --quiet --size a4 --bodyfont Arial --fontsize 8.0 --no-links --webpage $filename");

HTML2PDF

03
Aug

Datensicherung eines sehr großen Verzeichnisses auf mehrere Datenträger

Wie sichert man ein sehr großes Verzeichnis auf mehrere DVDs? Mit der guten alten Shell. :)

Unter Windows besorgt man sich zuerst die GNU Tools. Das wbin Verzeichnis sollte man zu der PATH Umgebungsvariable hinzufügen. Unter Linux stehen die notwendigen Tools bereits zur Verfügung.

Folgender Befehl sichert das Verzeichnis C:\foo\bar als gzip komprimiert (tarball), aufgeteilt in 100 MB große Dateien:

tar c C:\foo\bar | gzip | split -b100m - backup.tgz.split.

Die Dateien haben eine Bezeichnung nach dem Schema backup.tgz.split.aa, backup.tgz.split.ab, …

Die Wiederherstellung ist genauso einfach:

cat backup.tgz.split.* | gzip -d | tar -x

Das Packen und Entpacken geht erstaunlich schnell und stabil (getestet mit 30 GB). Die Programme sind kostenlos. Was will man mehr?

20
Jun

How to redirect a web page, the smart way

Ein korrekter HTTP Redirect in PHP, Java, ASP, ASP.NET und Perl findet sich unter How to redirect a web page, the smart way.

31
May

Backup auf Disketten

Jaja, einige von euch werden sich jetzt sicherlich amüsieren. Backup auf Disketten? (Das sind diese kleinen runden Speichermedien mit ner Hülle. Nein, nicht DVD-RAM …) Aber denoch ist die tar Option -M auch in Zeiten von USB-Sticks und DVD-RAM imho sehr interessant.
Auszug aus dem FreeBSD-Handbuch.

17.10.2. Wie mache ich ein Backup auf Disketten?

Die beste Art eines Diskettenbackups ist der Befehl tar(1) mit der Mehrfachband-Option -M, die es ermöglicht ein Backup über mehrere Floppies zu verteilen.

Ein Backup aller Dateien im aktuellen Verzeichnis einschließlich aller Unterverzeichnisse wird durch den folgenden Befehl veranlasst (als root):

# tar Mcvf /dev/fd0 *

Wenn die erste Floppy voll ist, meldet sich tar(1) und verlangt einen Diskettenwechsel (weil tar(1) unabhängig vom Medium arbeitet, wird das nächste Band (Volume) verlangt, was in diesem Zusammenhang eine Diskette bedeutet), in etwa wie folgt:

Prepare volume #2 for /dev/fd0 and hit return:

Dies wird mit steigender Volumenzahl wiederholt, bis alle angegebenen Dateien archiviert sind.

17.10.3. Können Diskettenbackups komprimiert werden?

Leider erlaubt es tar(1) nicht, die Option -z für Multi-Volume-Archive zu verwenden. Man kann natürlich alle Dateien mit gzip(1) komprimieren, sie mit tar(1) auf die Floppies aufspielen, und dann die Dateien wieder gunzip(1) entkomprimieren!

17.10.4. Wie werden Diskettenbackups wieder hergestellt?

Zur Wiederherstellung des gesamten Archivs verwendet man:

# tar Mxvf /dev/fd0

Eine Methode um nur bestimmte Dateien wieder her zu stellen ist mit der ersten Diskette den folgenden Befehl auszuführen:

# tar Mxvf /dev/fd0 filename

tar(1) wird dann die folgenden Disketten anfordern, bis die benötigte Datei gefunden ist.

Wenn man die Diskette kennt, auf der sich die Datei befindet, kann man alternativ diese Diskette auch direkt einlegen und den gleichen Befehl wie oben verwenden. Man beachte, dass, falls die erste Datei eine Fortsetzung einer Datei von einer der vorigen Disketten ist, tar(1) die Warnung ausgibt, dass diese Datei nicht wiederhergestellt werden kann, selbst dann, wenn dies gar nicht verlangt wurde!

19
Apr

Alle installierte Perlmodule in der Shell anzeigen lassen

perl -MExtUtils::Installed -le ‘for(ExtUtils::Installed->new()->modules()){print}’

10
Mar

Float ohne HTML Tag clearen

#elementMitFloat{
float:left;
}
#elementMitFloat:after {
content:".";
display:block;
height:0;
clear:both;
visibility:hidden
}

Preisfrage: Welcher Browser kann das nicht?
Richtig, der Internet Explorer.

08
Mar

Besuche mit www erzwingen

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*) http://www.example.com%{REQUEST_URI} [L]
08
Mar

IP in eine Ganzzahl wandeln

Die mySQL Funktion INET_ATON() wandelt eine IP in eine Ganzzahl.

SELECT INET_ATON("209.207.224.40");
-> 3520061480

209*255^3 + 207*255^2 + 224*255 + 40