Kein Problem

Nagios Firefox Extension Das liest man gerne. Deswegen küre ich den Nagios Checker zum Firefox-AddOn des Monats. Es fragt in regelmäßigen Abständen über die cgi-bin-Schnittstelle bei Nagios nach, ob alles in Ordnung ist und benachrichtigt den Benutzer im Falle eines Fehlers.
Super Sache, allerdings sollte man die Lautsprecher im Büro nicht zu laut stellen. Wenn die Hupe losgeht, zuckt so mancher Kollege schon mal zusammen oder verkippt seinen Kaffee 😉

Niemand will Backup, alle wollen Restore!

Wie versprochen die „rundum glücklich“-Lösung für das Backup. Ein grundlegendes Problem ist das Backup im laufenden Betrieb. Noch während das Backup läuft, verändern laufende Prozesse Dateien. Im Allgemeinen ist die /var-Partition und im Besonderen sind Datenbanken und Mailqueues problematisch. Man kann sich nie sicher sein, ob der Stand im Backup wirklich konsistent ist.

Es gibt verschiedene Ansätze dem Problem Herr zu werden. Eine Datenbank könnte man in ein SQL-File dumpen, der Mailserver könnte kurz angehalten werden um die Mailqueue zu sichern. Das sind jedoch alles nur 99%-Lösungen. Eigentlich müsste man das System für den Zeitpunkt des Backups komplett einfrieren, das Backup durchführen und es danach weiterlaufen lassen.

Snapshots implementieren diese Technik und verhindern so eine Downtime des betroffenen Services. Zunächst in Datenbanken wie z.B. Oracle populär, finden sich Snapshots jetzt auch in Dateisystemen (LVM, Windows Vista Shadow Copies). Der Snapshot selbst ist eine atomare Aktion, die lediglich den Snapshot-Zeitpunkt (t) festhält. Alle nach diesem Zeitpunkt (t+x) geschriebenen Blöcke werden separat gespeichert, so dass nun in aller Ruhe alle Blöcke des Zeitpunkt (t) ins Backup wandern können. Ist das Backup beendet, kann der Snapshot verworfen werden.

„Niemand will Backup, alle wollen Restore!“ weiterlesen

FTP-Backup: Speicherplatz nutzen

Viele Hoster stellen Backup-Speicherplatz via FTP bereit. Ärgerlich ist es, dass man zunächst sein Backup lokal erstellen muss um es dann via FTP auf den Backup-Server zu übertragen. Man muss also den Speicherplatz, den man auf dem FTP-Server nutzen will, auch lokal vorhalten.

Für dieses Problem gibt es zum Glück eine elegante Lösung: curlftpfs bindet via FTP erreichbare Resourcen ins Dateisystem ein.

Zunächst braucht man einen Kernel mit FUSE-Unterstützung. Den bringt Debian etch zum Glück gleich mit. Das Modul fuse muss geladen werden. Wenn das Gerät /dev/fuse existiert, ist alles gut gegangen:

# modprobe fuse && ls -la /dev/fuse

Dann brauchen wir die fuse-utils und curlftpfs:

# sudo aptitude install fuse-utils curlftpfs

Damit wäre der schwierige Teil erledigt 😉 Jetzt kann man einen kleinen Test wagen:

$ mkdir sunet
# curlftpfs ftp://ftp.sunet.se/ sunet/
# cd sunet/
# ls -l
total 0
Dr-xr-xr-x   3 root root        96 Feb 23  2004 bin
dr-xr-xr-x   2 root root        72 Mar  2  2004 dev
dr-xr-xr-x   2 root root        48 Feb 23  2004 etc
dr-xr-xr-x   2 root root       120 Feb 23  2004 lib
-rw-r--r--   1 root root 622187310 Mar 11 06:13 ls-lR
-rw-r--r--   1 root root  76389037 Mar 11 06:15 ls-lR.gz
drwxrwxr-x  37 root root      1272 Feb 27 14:17 pub
dr-xr-xr-x   3 root root        72 Feb 23  2004 usr
# cd ..
# fusermount -u sunet/

Prima, dann kann also der zugewiesene FTP-Space ins Dateisystem eingebunden werden. Der folgende Eintrag in der /etc/fstab erledigt das automatisch zum Systemstart:

curlftpfs#user:password@11.22.33.44 /media/ftp-backup fuse rw,uid=1000,user,auto 0 0

Der einzige Nachteil ist, dass jetzt das FTP-Passwort in /etc/fstab steht. In dem Fall muss man sie mit

# chmod 640 /etc/fstab

schützen. Wir mounten und testen kurz:

# sudo mount /media/ftp-backup
# sudo ls /media/ftp-backup -la
total 4
drwxr-xr-x 1 melle root 1024 Jan  1  1970 .
drwxr-xr-x 4 root  root 4096 Jul 12 22:04 ..
# mount | grep ftp
curlftpfs on /media/ftp-backup type fuse (rw,nosuid,nodev,noexec)

Das Problem wäre gelöst, das Backup-Programm kann jetzt direkt nach /media/ftp-backup scheiben. Wie man vernünftige Backups anfertigt, wird Inhalt des nächsten Artikels in dieser kleinen Serie sein.

Zum nächsten Teil: Niemand will Backup, alle wollen Restore! »
Zum ersten Teil: Debian Etch auf einem Rootserver mit Raid-1 und LVM »

Kommunen-Update

Das Projekt virtuelle Kommune nimmt konkrete Züge an. Wir haben genug Leute zusammen und es kann eigentlich losgehen. Aus Zeitgründen wird es erst Anfang Juli etwas.
Ein paar Zimmer sind noch frei, die Miete beträgt moderate 10 Euro (oder weniger) pro Monat. Das ist allerdings nicht primär ein Projekt um Hostingkosten zu sparen, sondern um eine Spielwiese für ausgefallenere Sachen (JSPs, RoR, Lisp-Webserver, VPNs, Mail, News, ….) mit guter Anbindung im Netz zu haben. Allerdings spricht auch nichts gegen Standardanwendungen auf PHP-Basis 😉

Rootie-Kommune

Aufgrund der aktuellen Ereignisse habe ich überlegt, auf einen „richtigen“ Rootserver umzuziehen. Natürlich ist so eine Kiste für meine paar Webseiten total überdimensioniert. Hat jemand von Euch ernsthaftes Interesse in so eine virtuelle WG mit einzuziehen?
Das wäre eine prima Spielwiese für groß und klein. Leidige Problem, wie die mangelhafte SFTP-Unterstützung bei 0-8/15-Hostern wären gelöst. Natürlich gibt es dann tausend andere. Außerdem ist es cool.
Voraussetzung für so eine Aktion: ich mache es nicht alleine. Es sollte mindestes ein unixoider Zeitgenosse an Board sein, der mit Postfix oder exim umgehen kann. Darüber hinaus sind natürlich alle Menschen willkommen, die einfach nur ihr Blog oder ihre Strickmustersammlung hosten wollen.

Offline

Ich bin etwas planlos, was das Problem war. Ein Verdacht geht in Richtung Spam Karma. Möglicherweise läuft ein Spam-Bot amok und bombardiert das System mit Kommentaren. Die Kommentare werden zwar von SK weggefiltert, Logeinträge entstehen aber trotzdem. Auf einer identischen Installation sind innerhalb kürzester Zeit die mysql-Logs voll laufen (mehr als 5GB Logdaten / Tag). Ich habe aus diesem Grund erstmal die Kommentare ausgeschaltet. Feedback unter gurkenwurst@gmx.net ist natürlich willkommen.

Domainfactory, Hoster dieser Seite, ist auch nicht gerade informativ (geschweige denn schnell):

——————————————–

Subject: Überlastung durch Ihre Domain / Sperrmitteilung // AN: 35564
From: technik (at) domainfactory.de
Date: Mon, June 18, 2007 13:59
To: ***** (at) ds.mellenthin.de

Sehr geehrter Herr Mellenthin,

die von Ihnen bei uns gehostete Domain mellenthin.de war für eine Serverüberlastung und Beeinträchtigung anderer Kundenpräsenzen verantwortlich. Dies stellt einen Verstoß gegen § 5.2 unserer von Ihnen anerkannten AGB dar.

ACHTUNG! Um die aktuelle Überlastung zu unterbinden, wurde Ihre Präsenz gem. unseren von Ihnen anerkannten AGB vorrübergehend gesperrt. Die Sperre wird spätestens im Laufe des kommenden Arbeitstages in der Zeit von 9 bis 18 Uhr aufgehoben.

Wir weisen Sie hiermit darauf hin, dass wir bei einer erneuten Serverüberlastung oder Beeinträchtigung anderer Präsenzen zu einer fristlosen Kündigung des Vertragsverhältnisses und dauerhaften Sperrung der Domain berechtigt wären. Einen solchen Schritt würden wir gerne vermeiden. Bitte prüfen Sie daher, ob und wie Sie die von Ihnen eingesetzten Scripte überarbeiten/optimieren können und ergreifen Sie alle notwendigen Maßnahmen, um weitere Probleme zu vermeiden.

(…)

——————————————–

Subject: Re: Überlastung durch Ihre Domain / Sperrmitteilung // AN: 35564
From: „Thomas Mellenthin“ < ****** (at) ds.mellenthin.de>
Date: Mon, June 18, 2007 16:03
To: technik (at) domainfactory.de

Hallo,

Können Sie mir bitte die Ursache der Überlastung nennen? Ohne einen konkreten Hinweis Ihrerseits kann ich das Problem wohl kaum beheben 🙁

——————————————–

Subject: [domainfactory.de #1166115] Re: Überlastung durch Ihre Domain / Sperrmitteilung // AN: 35564
From: technik (at) df.eu
Date: Mon, June 18, 2007 22:33
To: ***** (at) ds.mellenthin.de
Sehr geehrter Herr Mellenthin,

vielen Dank für Ihre E-Mail, gerne helfe ich Ihnen weiter.

Mit dieser E-Mail möchten wir Sie gerne über den aktuellen Status zu Ihrer Anfrage bezüglich der Problematik mit der Überlastung des Servers informieren.

Leider war es uns bis zum jetzigen Zeitpunkt noch nicht möglich, eine abschließende Bearbeitung Ihres Anliegens vorzunehmen. Aufgrund der zu prüfenden Sachverhalte sowie der hieraus erforderlichen Schritte benötigen wir noch etwas Zeit, um Ihr Anliegen bearbeiten zu können.

Wir bedauern die Verzögerung in dieser Sache ausdrücklich und hoffen diesbezüglich auf Ihr Verständnis. Bitte seien Sie versichert, dass wir selbstverständlich eine schnellstmögliche Erledigung anstreben und Sie
natürlich umgehend informiert werden, sobald eine abschließende Bearbeitung Ihres Anliegens erfolgt ist oder weitere Informationen zum entsprechenden Sachverhalt vorliegen.

Bei Rückfragen stehen wir Ihnen selbstverständlich jederzeit gerne zur Verfügung.

Freundliche Grüße

(…)

——————————————–

Subject:[domainfactory.de #1166115] Re: Überlastung durch Ihre Domain / Sperrmitteilung // AN: 35564
From: technik (at) df.eu
Date: Tue, June 19, 2007 13:51
To: melle@ds.mellenthin.de

Sehr geehrter Herr Mellenthin,

vielen Dank für Ihre E-Mail, gerne helfe ich Ihnen weiter.

Das Problem war, dass die Datei index.php der Domain mellenthin.de sehr lange lief bei einem Aufruf. Dabei verbrauchte das Script ziemlich viel Speicher und somit stieg die Last auf dem Server an. Dadurch kam es zur Beeinträchtigung anderer Kundenpräsenzen, was einen Verstoß gegen die von Ihnen anerkannten AGB darstellt. Wie Sie verstehen werden, achten wir in erster Linie auf Systemstabilität und aus dem Grund mussten wir die Domain aus Sicherheitsgründen sperren. Ich habe die Domain aber nun wieder entsperrt. Ich möchte Sie jedoch bitten, Ihr Script dahingehend zu optimieren, dass es nicht mehr so lang läuft und wenn möglich weniger Speicher verbraucht. Sollten es erneut zu einer Überlastung durch Ihre Domain kommen, kann es auch wieder zu einer Sperrung kommen, von daher kann ich Ihnen nur raten, das Script zu optimieren. Eine Sperrung ist verständlicher Weise weder in Ihrem noch in unserem Interesse.

Bei Rückfragen stehen wir Ihnen selbstverständlich jederzeit gerne zur Verfügung.

Freundliche Grüße

(…)

——————————————–

Tja, dann werde ich mal optimieren… am besten optimiere ich die Seite erstmal auf einen eigenen Server, damit ich wenigstens vernünftige Informationen bekommen, was schief läuft… („Wenn man nicht alles selber macht…“).

LinuxTag 2007

LinuxTag 2007

Ich habe drei eTickets für den LinuxTag 2007 zu verschenken, d.h. damit kann man die Messe und Konferenz des LinuxTag 2007 in Berlin kostenlos besuchen. Kreative Bewerbungen bitte in die Kommentare. Verlost werden die Tickets Donnerstag früh 😉

Zweiundreißig Cent

Oh: Ich habe im April fünf Telefonate geführt. Ich werde auf meine alten Tage glatt zur Tratschtante… Allerdings outen mich 100GB pro Monat, die über die gleiche Kupferdoppelader gehen, ganz schnell als pickeligen Nerd 😉

32 Cent

Verflixte Wurst

Ich habe gerade so ein nerdiges Problem, das mich wieder einmal voll in die Tischkante beißen lässt. Es dreht sich um eclipse und ant: komischerweise kann ich JAVA_HOME innerhalb eines ant-Scriptes nicht auflösen 🙁

Um das mal zu verdeutlichen. So starte ich eclipse:

#!/bin/sh
export QUARK=Erdbeer
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun-1.5.0.11
/usr/bin/eclipse \
-vm /usr/lib/jvm/java-1.5.0-sun-1.5.0.11/bin/java

So sieht mein ant-Script aus:

<property environment="env" />
<echo>QUARK=${env.QUARK}</echo>
<echo>JAVA_HOME=${env.JAVA_HOME}</echo>

und das ist der Output:

[echo] QUARK=Erdbeer
[echo] JAVA_HOME=${env.JAVA_HOME}

Ich starte ANT von eclipse aus. Egal, was ich mache, JAVA_HOME wird immer ignoriert. Ich bin langsam mit meinem Latein am Ende und für Hinweise sehr dankbar. Ant außerhalb von eclipse zu starten ist leider keine Option.
Ich weiss, dass es eigentlich funktionieren muss, weil ich ${env.JAVA_HOME} genau in einem anderen Projekt verwende. Die Frage ist nur, warum es hier so dermaßen daneben geht.

ironisch

Ironically, to make Firefox your default browser under Mac OS X, you have to run Safari, select Preferences, and set Default Web Browser to Firefox.“ [#]

Egal, hauptsache der richtige Browser tut es.

Angekommen

Ganz schick hier. Ich denke mit 500 Leuten wird die Kalkscheune gut gefüllt sein, die Limitierung ist also berechtigt.
Die Lounge ist mit SUN-Terminals ausgestattet, ohne Notebook anzureisen ist also gar nicht so schlimm. Hier sitzen ziemlich viele Leute mit ziemlich vielen Notebooks aus den Knien rum. Auf vielen ist ein Apfel.
Ich bin müde und schreibe deswegen wirres Zeug. Tschuldigung, das wird heute noch, hole mir erstmal einen Kaffee.

p.s.: Übrigens sehen die neon-farbenen Armbändchen aus wie Pauschalurlaub!

Backup

Die Geizmarkt-Geschenkgutscheine der letzten Jahre in eine allerwelts-„Backuplösung“ investiert. Jetzt langsam das Gewissen beruhigen, weil die so kostbaren Werke von nun an die Chance auf ein Überleben haben. Nicht, dass ich vorhier nie meine Daten gesichert hätte, aber DVD-RAM ist bei den Mengen einfach ein Witz, was Medienpreis und Schreibgeschwindigkeit angeht.

Auch nett: „Wie formatiere ich eine externe Festplatte?„. Ausgeliefert wird das Teil NTFS-formatiert. Ungünstig, wenn man nur Mac OS X und Linux benutzt und eine gelegentlichte Anstöpselung bei befreundeten Windows-Maschinen angedacht ist.

NTFS schreiben kann man unter Mac OS X und Linux vergessen. HFS+ wäre ein heißer Kandiat, wäre da nicht die „ab und zu mal“ Windows-Connectivität. Also schweren Herzens FAT32 gewählt. Natürlich kann eine Partition mit dem XP-Festplattenmanager maximal 32 GB groß sein. Partition Magic schafft immerhin 190GB – keine Ahnung, welche Grenze dort wieder zuschlägt. Zumindest habe ich jetzt zwei halbwegs gleich große Partitionen, die ich von überall beschreiben kann.

Jetzt heisst es abwarten.

Backup

Die gleiche Menge Musik wartet noch auf das Rettungsboot. Ich denke derweil über eine gute Automatisierungslösung nach, in der rsync eine Rolle spielt.

Was geht ab? Feed kaputt

Seit dem Update auf WordPress 2.1.2 ist zeigt der Feed von statischen Pages auf die Kommentare zu dieser Seite. Das ist ein WordPress-Bug, leider habe ich keine einfache Lösung dafür gefunden. Ich bin für sachdienliche Hinweise dankbar (die gesamte Installation auf trunk/ zu updaten zählt nicht zu den bevorzugten Lösungen…).

Gentoo sieht das Thema WordPress wieder ganz pragmatisch: „Due to the numerous recently discovered vulnerabilities in WordPress, this package has been masked in the portage tree. All WordPress users are advised to unmerge it.

Update: Es gibt ein Plugin für das Problem (Danke für den freundlichen Hinweis). Nur im Zusammenspiel mit Feedburner gibt es merkwürdige Effekte.

Lesezeichen für mich selbst

Aus meinem Studium ist mir ein Stück Papier erhalten geblieben, das zur Reliquie wurde. Auf engstem Raum, unter Missachtung sämtlicher Augenkrebsregeln und Layout-NoNos hat es unser heiß geliebter Unix-Prof geschafft ein Unix-Script zusammenzukopieren, das mir heute noch als Nachschlagewerk dient. Den Unterschied zwischen $@, $? und $* kann ich mir einfach nicht merken.
Zum Glück kann ich das heilige und abgegrabbelte Schriftstück nun endlich dem Altpaier zuführen. Google spuckte mir heute Introduction To Bash Shell Scripting aus – eine geniale Bash-Referenz in der alles wichtige steht, was man über die Bash wissen muss.
(Ja, es gibt eine man-Page. Schon mal versucht mit der Suchfunktion den Syntax von if nachzuschlangen? Eben!)

Apfelpost

Ich bin ein Mail-Junkie. „Mein Gott, bist Du kommunikativ!“ ist noch ein Vorwurf der netten Sorte.
Was ich nicht in meinem Kopf habe, liegt in meiner INBOX. Die Suchfunktion des Mailprogramms hat schon so manche Gedächtnislücke gefüllt. Seit etlichen Jahren schwöre ich auf die Kombination aus IMAP und Eichhörnchen, damit ich auch von überall auf der Welt an meine Mails komme und ich nicht zwei Postfächer pflegen muss.
Seit dem Apfel auf meinem Schreibtisch versuche ich mit Mail.app glücklich zu werden. Bisher klappt es auch ganz gut, es gibt aber ein paar geniale Tools, die das ganze noch komfortabler machen.

Mail Appetizer

Mail Appetizer zeigt neue Mails in einem halbtransparenten Vorschaufenster an. Man kann also mit einem kurzen Blick prüfen, ob es sich lohnt das Mailprogramm nach vorne zu holen. Das kling simpel, ist aber extrem nützlich. Und so sieht’s aus:

Mail appetizer

IMAP-IDLE

IMAP-IDLE stattet Mail.app mit Unterstützung für das IDLE-Feature von IMAP aus. Wenn der Mailserver dieses Feature unterstützt, benachrichtigt er Clients sofort beim Eintreffen von neuen Mails. Mail.app muss also nicht mehr den Server im Minutentakt nach neuen Mails fragen.

Für Courier-IMAP muss man in der /etc/courier/imapd das Idle-Feature mit folgender Zeile aktivieren:

IMAP_ENHANCEDIDLE=1

IMAPCheck

Leider Prüft Mail.app nur die INBOX selbst und keine Unterordner. Wenn Mails direkt vom Mailserver in die Ordner sortiert werden, merkt man so lange nichts davon, bis man nicht auf diesen Ordner klickt.
Dieses Problem behebbt IMAPCheck: damit werden alle IMAP-Ordner nach neuen Nachrichten geprüft.

Anrufbeantworter-Bingo

Diverse Anrufer beschweren sich derzeit, dass mein Anrufbeantworter nicht funktioniert. Dieses Problem ist nun behoben. Ich habe gleich noch ein paar Lustige Anrufbeantwortersprüche aufgenommen, diese werden zufällig ausgewählt dem Anrufer kredenzt. Und so geht’s:

Zunächst braucht man einen funktionierenden Capi-Treiber. Es gibt von AVM Treiber für SuSE 9.3, die sich aber nicht sofort bauen lassen, wenn man z.B. Debian verwendet:

make -C src
make[1]: Entering directory `/home/melle/tmp/fritz/src'
make -C /lib/modules/2.6.17-2-k7/build SUBDIRS=/home/melle/tmp/fritz/src modules
make[2]: Entering directory `/usr/src/linux-headers-2.6.17-2-k7'
CC [M] /home/melle/tmp/fritz/src/main.o
In file included from /home/melle/tmp/fritz/src/queue.h:27,
from /home/melle/tmp/fritz/src/tables.h:31,
from /home/melle/tmp/fritz/src/driver.h:31,
from /home/melle/tmp/fritz/src/main.c:45:
/home/melle/tmp/fritz/src/tools.h:74: error: expected identifier or '(' before 'typeof'
/home/melle/tmp/fritz/src/tools.h:74: error: expected ')' before '__xchg'
make[3]: *** [/home/melle/tmp/fritz/src/main.o] Fehler 1
make[2]: *** [_module_/home/melle/tmp/fritz/src] Fehler 2
make[2]: Leaving directory `/usr/src/linux-headers-2.6.17-2-k7'
make[1]: *** [fcpci.ko] Fehler 2
make[1]: Leaving directory `/home/melle/tmp/fritz/src'
make: *** [src/fcpci.ko] Fehler 2

Zum Glück haben schon andere freundliche Menschen herausgefunden, dass man ledliglich in src/tools.h eine Inline-Definition entsorgen muss. Einfach diese Zeilen auskommentieren:

static inline unsigned long atomic_xchg (
volatile atomic_t * v,
unsigned value
) {
return __xchg (value, &v->counter, sizeof (unsigned));
} /* atomic_xchg */

Und schon kann das Modul fcpci.ko gebaut und geladen werden. Das sieht gut aus:

fcpci: module license 'Proprietary' taints kernel.
fcpci: AVM FRITZ!Card PCI driver, revision 0.7.2
fcpci: (fcpci built on Jan 27 2007 at 11:46:23)
fcpci: -- 32 bit CAPI driver --
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 16
ACPI: PCI Interrupt 0000:02:0a.0[A] -> Link [LNKA] -> GSI 16 (level, low) -> IRQ 225
fcpci: AVM FRITZ!Card PCI found: port 0xcc00, irq 225
fcpci: Loading...
fcpci: Driver 'fcpci' attached to fcpci-stack. (152)
fcpci: Stack version 3.11-07
kcapi: Controller 1: fcpci-cc00-225 attached
kcapi: card 1 "fcpci-cc00-225" ready.
fcpci: Loaded.

Dann installiert man sich mit dem Paketmanager der Wahl Capisuite. /etc/capisuite/answering_machine.conf muss um einen Eintrag für den Anrufbeantworter erweitert werden:

[melle]
voice_numbers="8715419"
voice_action="MailAndSave"
voice_delay="1"
record_length="90"
voice_email="melle <email @ adresse.de>"
pin="1234"
announcement="ansage.la"

Die Telefonnummer ist die Zielnummer ohne Ortsvorwahl, nach einer Sekunde kommt die Ansage und man kann 90 Sekunden quatschen, das Resultat wird via e-Mail verschickt.
Jeder User (der Name in den eckigen Klammern) hat ein Spool-Verzeichnis unterhalb von /var/spool/capisuite/users/. Die Ansage ansage.la wird in diesem User-Verzeichnis gesucht.

Der Anrufbeantworter funktioniert schon fast, wir brauchen noch ein paar lustige Ansagen. Die kann man entweder aufnehmen in dem man sich selbst anruft, die PIN eingibt und dann losquatscht. Oder man hat eine tolle Plattensammlung und möchte die Audioschnipsel von CD durch die Telfonleitung quetschen.
Wenn das gewünschte File als WAV vorliegt, kann man es mit sox konvertieren:

sox ansage.wav -r 8000 -c 1 -b ansage.la resample -ql

Super, jetzt funktioniert der Anrufbeantworter. Fehlt nur noch eine Shuffle-Funktion. Die sieht bei mir so aus:

#!/bin/sh
rm /var/spool/capisuite/users/melle/ansage.la;
ln -s `ls /var/spool/capisuite/users/melle/*.la -1 | rl | tail -1` /var/spool/capisuite/users/melle/ansage.la

rl kommt aus dem Paket randomize-lines und verwurstelt die Ausgabe von ls. Das Script kann man jetzt via Cronjob ausführen lassen, um z.B. stündlich die Ansage zu shuffeln. Lustiger ist es vor jedem Anruf, damit immer eine neue Ansage zu hören ist.
In /etc/capisuite/incoming.py sucht man sich die Funktion callIncoming und dann die Zeile

capisuite.connect_voice(call,int(delay))

heraus. Dort geht der Anrufbeantworter ran, es genügt also oberhalb dieser Zeile folgendes einzufügen:

os.popen("rm /var/spool/capisuite/users/melle/ansage.la; ln -s `ls /var/spool/capisuite/users/melle/*.la -1 | rl | tail -1` /var/spool/capisuite/users/melle/ansage.la")

Fertig ist die Laube. Wer es ausprobieren will – einfach ein paar Mal hier anrufen: +49-331-8715419. Keine Angst, ist nur der Anrufbeantworter, ich werde nicht geweckt, wenn dort jemand anruft 😉

Grüezi

Die Schweizer sind nicht so langsam wie befürchtet. Andere Klischees werden aber mit Bravour erfüllt: die Preise befinden sich im oberen unangenehmen Bereich.

Aldi mit Kaffeeautomat Das Frühstück im Hotel kostet extra, wir geizen natürlich und versuchen extern preiswert zu schlemmen. Netter Versuch. Als wir verzweifelt und hungrig bei McDonalds stehen, fällt uns auf, dass genau in dieser Woche die komplette Kücheneinrichtung ausgetauscht wird und das „Restaurant“ eine Baustelle ist. Zum Glück ist ein paar Meter vom Coop-Supermarkt entfernt ein Coop-Restaurant. Coop ist soetwas wie Aldi, nur teurer 😉 Immerhin bekommt man für CHF 6.70 zwei Brötchen, ein Stück Butter, eine Marmelade und zwei Heißgetränke. Es geht also auch preiswert, man muss nur ein bisschen suchen.

Die größte Schwierigkeit ist jedoch Strom. Nicht, dass die Schweizer keinen hätten. Viel mehr haben sie andere Steckdosen. Wir haben zwar so viel Equipment mit, dass wir einen nuklearen Erstschlag ausführen könnten, aber an einen blöden Reiseadapter haben wir natürlich nicht gedacht. Das kommt davon, wenn man zu selten auf Firmenkosten durch die Welt jettet. Zum Glück erbarmen sich die netten Schweizer und spendieren zwei Adapter, die wir von nun an hüten, wie unsere Augäpfel.

Im Hause des Gastgebers gibt es nette Gepflogenheiten. Arbeitsbeginn ist eher früh am morgen und um 9.00 Uhr wird es auch höchste Zeit erstmal einen Kaffee in der Kantine zu trinken. Natürlich gibt es zum Nachmittag um 15.00 Uhr auch noch einen Kaffee. Die Zeit nimmt man sich und so kommt selten der Eindruck von Stress auf. Ich bin überrascht, wie gut ein Latte Macchiato aus dem Automaten schmecken kann.
Überhaupt ist die Kantine spektakulär. Jeder Gast wird gefragt, ob es so gut sei (*dreht den Teller hin und her*) oder ob man noch mehr von diesem oder jenen haben möchte. Sehr wohltuend, in Deutschland wird man ja eher angeschnauzt 😉 Gezahlt wird bargeldlos mit Geldkarte. Das ist dieser komische Chip auf den EC-Karten, die hierzulande niemand benutzt, außer ein paar Rauchern.

Bestens vorbereitet hat der Gastgeber auch einen DSL-Anschluss auf unseren Schreibtisch patchen lassen, damit wir mit der großen weiten Welt reden können. Leider gibt es nur ein Kabel für zwei Notebooks. Wir ergänzen die „Liste für’s nächste Mal“ um einen kleinen Switch.
Zum Glück kann der langhaarige Bombenleger mit einem WLAN-Kabel etwas löten. Ein Linux-Notebook wird zum Router, die Windows-Büxe wird in einem Ad-Hoc Netzwerk angebunden. Wenn man dann noch ganz lieb

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

flüstert, kommt der Windows-Kollege auch raus und kann mit seinem VPN-Dingsbums die Heimat erreichen.

Wenn man dann abends ermattet noch ein paar Mails schreiben möchte, ist man erstmal ziemlich verzweifelt. Es gibt haufenweise offene WLANs, die einem sehr günstige Angebote für 30 Minuten bis 7 Tage Nutzungsdauer machen. Bei den Preisen haben wir erstmal einen multiplen Lachanfall bekommen.
Zum Glück gibt es zu hause ein paar sehr nette Menschen, die Datenreisenden zu jeder Tages- und Nachtzeit behilflich sind. Wer ein kostenloses WLAN sucht und Hunger hat, dem sei das Café Domino in Bern wärmstens empfohlen. Extrem leckere libanesische Küche, sehr nette und hilfsbereite Besitzer sowie (für schweizer Verhältnisse) günstige Preise.

Ein Beweis, wie vorausschauend die Eidgenossen hier sind, befindet sich im Badezimmer des Hotels. Flaschenöffner und Korkenzieher sind in günstiger Nähe zum Klo fest an der Wand installiert. Somit steht der Völlerei nichts mehr im Wege 😉

Korkenzieher auf dem Klo

ssh-Login mit ohne Passwort

Bevor ich das wieder vergesse, schreibe ich es mal besser auf:

$ ssh-keygen -t rsa                                                                   
$ cat .ssh/id_rsa.pub | ssh server 'cat >> .ssh/authorized_keys'