Tips und Tricks

Home

vi Makro zur Konversion von altem PHP Code

Alter PHP Code greift direkt auf globale Variablen zu, die vom Webserver gesetzt werden. Dies ist ein Sicherheitsrisiko und deshalb sind aktuelle Webserver und PHP Interpreter anders konfiguriert.

Automatisches Suchen und ersetzen hilft bei der Portierung wenig, weil die lokalen Variablen nach dem gleichen Muster benutzt werden. Manuelles editieren ist mühsam und fehleranfällig, deshalb haben wir das folgende vi-Makro geschrieben:

map v f$a_POST["^[ea"]^[

Dieses Makro ist wohl bloss für vi-Gurus verständlich, deshalb die Erklärung dazu:

mapdefiniert ein vi-Makro
vist einer der wenigen Buchstaben die von vi noch nicht belegt sind
f$positioniert den Cursor auf dem nächsten $-Zeichen
afügt Text hinter dem $ ein
_POST["wird eingefügt
^[beendet das Einfügen. Die Eingabe erfolgt durch <Ctrl-V>Esc
egeht zum Ende des Worts, also dem Variablennamen
afügt Text hinter dem Wort ein
"]wird eingefügt
^[beendet das Einfügen.

Dieses Makro ersetzt also zum Beispiel $variable durch $_POST["variable"].

rsync zum Kopieren eines Disks

Sie finden tausende von Seiten über rsync, aber die Kombination hier haben wir nur einmal gesehen. Trotz eifrigem Suchen haben wir die Seite dann nicht wieder gefunden...

Das Kommando dient dazu, den Inhalt eines Server-Directories möglichst exakt zu kopieren

rsync -avH --delete --numeric-ids -e ssh user@server.ch:/var/www/ www/
-aRekursives Kopieren mit allen Rechten
-vVerbose
-HHardlinks erhalten
--deleteFiles die im Source-Directory nicht existieren werden gelöscht
--numeric-idsDie numerischen IDs kopieren, nicht anpassen
-e sshSSH als Transportmedium verwenden

Achten Sie auf die Slashes hinter Source- und Destination-Directories. Sie sind wichtig !

UDP-Paket mit Command Line Tools schicken

Es kommt immer wieder vor dass man schnell mal ein UDP-Paket schicken soll, möglichst ohne ein Programm zu schreiben. Die folgende Zeile benutzt echo und netcat um das zu bewerkstelligen.

echo -en '\0\0' | netcat -u 192.168.1.202 5431
-e\0 wird als Byte 0x00 interpretiert
-nKein Newline ausgeben
-uUDP als Transportmedium benutzen
192.168.1.202IP-Adresse des Remote-Systems
5431Portnummer auf dem Remote-System

Die Quotes sind nötig, sonst "frisst" die Shell die Backslashes.