M8IN.DE

Was ich schon immer mal sagen wollte!

Schlagwort: it

MySQL Datenverzeichnis verschieben. Leicht gesagt.

Auf meinem neuen Linux Webserver wollte ich – um mir das Datensicherungsgehähe zu vereinfachen – den Datenbankpfad für MySQL verschieben. Eigentlich ganz einfach, da nur der Eintrag datadir = /var/lib/mysql in der Datei /etc/mysql/my.cnf anzupassen ist. Blöderweise ließ sich nach dieser Anpassung der Dämon (mit Error 13 – Zugriff verweigert) nicht mehr starten. Schuld ist AppArmor, welches das neue Datenverzeichnis noch nicht kennt und den Zugriff dort hin blockiert.

Zum Glück ist die Lösung einfach und hier gut dokumentiert. Man muss die AppArmor Konfiguration in der Datei /etc/apparmor.d/usr.sbin.mysqld um den neuen Datenpfad ergänzen. Dazu werden die folgenden Zeilen angefügt:

/srv/mysql/ r,
/srv/mysql/** rwk,

Nach einem Neustart von AppArmor mit sudo service apparmor restart lässt sich dann auch myssql wieder starten: sudo service mysql restart

Nochmals Danke an Matthias!

„multiline pattern matching“ mit sed

Ich liebe sed. Und manchmal auch awk. Beide haben aber das Problem, dass man nicht einfach(!) mehrzeilige Pattern suchen und ersetzen kann. Dachte ich zumindest bis gerade eben. Aber man lernt ja nie aus – „hold space“ ist das Zauberwort…

But we can optimize this. Besides pattern space, sed also provides the so called hold space. This is just a temporary buffer on which no operations are performed. We can use this to read the whole input into it first and then replace the pattern space with the contents from hold space. That looks like this:

sed -n ‚1h; 1!H; ${ g; s/foo\nbar/bla\nblub/ p }‘

That first reads the first line from pattern space into hold space (1h) replacing all contents which currently exist in hold space. Then all lines except line 1 are appended to hold space (1!H). The reason why we cannot only use 1,$H is that this would result in a blank line at the beginning since hold space has not been emptied. As soon as the end of the string is reached (range marker $), a subclause is opened which writes contents from hold space into pattern space (g) and does the replacement. Because we have read everything into hold space and then into pattern space, we would get double output. To avoid this, the parameter -n (no output) is set and the edited final string is printed manually with the p command from within the subclause. This method works remarkably well, but you should note that it is much slower if the stream/file is very long. One advantage of sed over many other tools is that it reads line by line, so it doesn’t take more memory when working on long strings. This advantage is abrogated with this method. Keep that in mind.

Danke an Janek Bevendorff, der mein IT-Leben mit diesem Post echt leichter gemacht hat 😉

Foretrex 201/ Ubuntu

Mein Windows 8 Rechner erkennt mein Prolific RS232->USB Kabel nicht mehr. Da ich aber auf die Schnelle eine Lösung brauchte um meinen Track vom (nur seriellen) Garmin Foretrex 201 zu ziehen, habe ich meine Ubuntu VM gestartet und erfreut festgestellt, dass das Prolific Wandlerkabel als /dev/ttyUSB0 erkannt wurde. Wie hier auf XALPS.DE beschrieben, versuchte ich dann auch direkt mutig, den Track mit gpsbabel abzuziehen. Ging nicht :-/ Unable to init /dev/ttyUSB0. Die Lösung war dann am Ende wieder ganz einfach: das Garmin Protokoll arbeitet mit 9600 Baud – und das konnte die Schnittstelle unter Ubuntu ja nicht wissen. Also flux ein sudo stty -F /dev/ttyUSB0 9600 im Terminal abgesetzt und schwups – dann gings.

Windows 8: Sigma ROX 9, Netduino, Arduino…

Wer schon mal versucht hat, seinen ROX 9, einen Arduino oder Netduino an seinen Windows 8 Rechner zu zu klemmen wird schnell gemerkt haben, dass die Treiber nicht digital signiert sind und daher als nicht kompatibel abgelehnt werden. Aber es gibt eine recht einfache Lösung, die hier (http://dhakshinamoorthy.wordpress.com/2012/05/14/installing-an-unsigned-driver-in-windows-8-x64/) auf englisch gut erklärt wird. Wer die Lösung auf Deutsch braucht, kann mich gerne fragen… 😉

ProFTPd: langsames Login

Die Logins auf dem ProFTPd Server hinter unserer Firewall dauerten (bis eben) ewig. Nach dem Connect auf dem Server vergingen gut und gerne bis zu 60 Sekunden, bevor die Verbindung hergestellt wurde. Im Netz findet man allerlei Anleitungen, die das Problem angehen. Meist wird

IdentLookups off
UseReverseDNS off

als Lösung empfohlen. Hat bei mir aber nix gebracht. Erst in den Tiefen des Webs wurde ich dann fündig: das Problem liegt nicht bei ProFTPd, das Problem ist der xinetd! Dieser logged standardmäßig jede Menge Infos:

log_on_success += PID HOST USERID EXIT DURATION
log_on_failure += HOST USERID ATTEMPT

Warum das hier bei mir nicht funktioniert ist mir eigentlich egal. Kommentiert man diese beiden Zeilen nun einfach mal aus, so geht die Anmeldung am Server wieder extrem schnell!

Datei: /etc/xinetd.d/proftpd

# default: on
# description: The ProFTPD FTP server
service ftp
{
socket_type = stream
protocol = tcp
wait = no
# bind = IP
instances = 30
user = root
server = /usr/sbin/proftpd
# log_on_success += PID HOST USERID EXIT DURATION
# log_on_failure += HOST USERID ATTEMPT

# nice = 10
# disable = yes
}

NACHTRAG: Sollte der obige Tipp nicht helfen: eine weitere Ursache kann das Fehlen der Direktive DefaultAddress in der Konfiguration sein. Ich habe diese soeben eingetragen und schwupps – wieder schnell…

Diskstation: SMS2Email Gateway mit AldiStick

Firmenhandys sind ’ne tolle Sache – aber nicht jeder kennt meine neue Nummer. Also hab ich auf meiner alten Nummer kurzerhand eine Rufumleitung/ -weiterleitung eingerichtet. Auch ’ne tolle Sache. Aber leider funktioniert das bei SMS bekanntermaßen nicht. Also musste ein SMS2Email Gateway her, der auf der alten Nummer eingehende SMS als Email auf mein neues Handy schickt. Auf meinem Nagios Linux Server hatte ich sowas ähnliches schon mal gebastelt, also sollte das doch auch mit meiner Diskstation zu machen sein…
Als Hardware stand mir eine Synology Diskstaion DS211j (mit Firmware DSM 3.2, v1944, Kernel 2.6.32) und ein AldiStick (schwarzer UMTS Stick, Medion S4012, aka Huawei E620 bzw. E1550) sowie eine PIN-freie AldiTalk SIM-Karte zur Verfügung. Vorweg: es läuft – aber es war nicht einfach! (mehr …)

Diskstation: Kumm, macheme ens e Update…

Zwischen Frühstück und Einkaufen und kurz vor der Karnevalssitzung in Enzen kann man ja mal schnell ein Update der DSM 3.2 auf v1944 machen. Gute Idee. Hat auch geklappt. Dann noch schnell mal schauen, wie kalt es draußen ist – und da offenbart sich das Elend! Meine mühsam kompilierten FTDI Module sind weg. *argh* Mal schauen, ob ich meine eigene Anleitung noch verstehe. Hier gibt es die Sourcen für v1944: SourceForge
Aber vorher noch schnell Einkaufen gehen, sonst gibt’s Mecker 😉