A personal weblog by Ulf Rompe. Includes entries about my life, thoughts, Debian, Linux, GIMP, LaTeX, PHP, Photography, other weblogs and sometimes completely random things. Mostly german, sometimes english.

Convert SSHMenu to Remmina configuration

Do you have an extensive list of hosts configured for quick access in SSHMenu? Are you bothered by the fact that Ubuntu just threw SSHMenu out of their 11.10 repositories? Looking for an alternative?

There aren't many SSH connection managers in the Ubuntu repos. The one that looks most promising to me is Remmina, and in fact I already used it to manage my RDP and VNC connections. As I didn't want to configure all of my hosts manually in Remmina, I wrote a simple Python script that imports SSHMenu bookmarks to Remmina. Read the script's docstring to get an impression:

Convert a SSHMenu configuration found in ~/.sshmenu
to Remmina host configuration snippets in ~/.remmina.
The folder structure is created within a "SSHMenu" folder.
Remmina must be restarted after running this script.

The "geometry" and "profile" parameters are dropped
as these aren't configurable in Remmina. The "sshparams"
parameter is split into a host and a command part.

This script creates Remmina configuration files with
a "sshmenu_" prefix. If you want to get rid of them,
just run "rm ~/.remmina/sshmenu_*.remmina" and restart
Remmina again.

As you can see, this script is fairly simple. Please
read the code before using it to make sure it will do
what you want.

Tested with SSHMenu 3.18 and Remmina 0.9.3.

2011-09-17 Ulf Rompe http://ulf.rompe.name/

Feel free to use the attached script for your needs. Just safe it as "sshmenu_to_remmina.py", read and understand it, make sure to "apt-get install python-yaml" and run it with "python sshmenu_to_remmina.py". If it doesn' work, drop me a line.

Twitter introduces sane URL wrapping

Up to now, every time I decided to look into using Twitter I was quickly annoyed by all those people posting shortened URLs, giving no hint about what server you will be redirected to after clicking the link. Being a person who looks at every URL before clicking it, I got bored by having to install tools to verify those URLs, and came to the conclusion that Twitter just sucks. I always thought: "Is it so hard to extend the 140 character limit just for URLs?"

Seems like Twitter finally read my thoughts. From their newsletter:

In the coming weeks, we will be expanding the roll-out of our link wrapping service t.co, which wraps links in Tweets with a new, simplified link. Wrapped links are displayed in a way that is easier to read, with the actual domain and part of the URL showing, so that you know what you are clicking on. When you click on a wrapped link, your request will pass through the Twitter service to check if the destination site is known to contain malware, and we then will forward you on to the destination URL. All of that should happen in an instant.

The time they are activating this change will be the time I start twittering. What a pity that it is Twitter who is implementing this and not Status.net, but hey, at least someone had the brainwave.

Images virtueller Maschinen von Xen nach KVM konvertieren und in libvirt einbinden

Problem: Ein alter Xen-Server unter Ubuntu 7.10 (Gutsy Gibbon) mit diversen Hardy-Gästen, neuerdings zickig und nicht mehr unterstützt. Ein vorsichtiges Update auf Hardy Heron machte Xen erst richtig instabil, mindestens eine VM war immer down.

Ein Wechsel zu KVM lag also nahe, zumal er schon lange auf der Todo-Liste stand und nur aus Zeitgründen noch nicht umgesetzt wurde. Da ich die KVM-Unterstützung in Hardy auch nicht in allzu guter Erinnerung hatte, Lucid Lynx in wenigen Tagen released werden wird und ich mit KVM unter Lucid schon gute Erfahrungen gemacht habe, wurde also erst einmal auf Lucid aktualisiert.

Dann mussten zunächst die Disk-Images der Xen-Maschinen konvertiert werden. Das geht nicht automatisch, aber es gibt im Netz beispielsweise unter [1] und [2] gute Hinweise dazu. Wir haben uns nicht ganz daran gehalten, vor allem, weil wir die VMs unter Xen teilweise gar nicht mehr booten konnten, um sie vorbereitend zu modifizieren.

Zur Konvertierung und Inbetriebnahme eines Images hat sich dieser Ablauf bewährt:

Neues Image erstellen, etwas größer als das Xen-Image zzgl. gewünschter Swap-Partition. Für ein 150GB-Image:

# dd if=/dev/zero of=kvm.img bs=1M count=163840

Image partitionieren:

# parted kvm.img mklabel msdos
# parted kvm.img mkpart primary ext2 0 162000 -a minimal
# parted kvm.img mkpart primary linux-swap 162000 163840
# parted kvm.img set 1 boot on

Block-Devices für das Image erstellen:

# losetup /dev/loop0 kvm.img
# kpartx -a /dev/loop0

Inhalt des Xen-Images kopieren und an Partition ausrichten:

# dd if=/opt/domain/domains/alter-xen-server/disk.img of=/dev/mapper/loop0p1 bs=1M
# fsck.ext3 -f /dev/mapper/loop0p1
# resize2fs /dev/mapper/loop0p1
# fsck.ext3 -f /dev/mapper/loop0p1

Swap anlegen:

# mkswap /dev/mapper/loop0p2

Grub und Kernel in Partition installieren:

# mount /dev/mapper/loop0p1 /mnt
# mkdir -p /mnt/boot/grub
# cp /boot/grub/stage1 /mnt/boot/grub/
# cp /boot/grub/stage2 /mnt/boot/grub/
# cp /boot/grub/e2fs_stage1_5 /mnt/boot/grub/
# chroot /mnt
# apt-get install grub linux-server
# update-grub
# exit
# umount /mnt

Block-Devices entfernen:

# kpartx -d /dev/loop0
# losetup -d /dev/loop0

Boot-Sektor installieren:

# echo "device (hd0) kvm.img
root (hd0,0)
setup (hd0)
quit" > /tmp/grub.input
# grub --device-map=/dev/null < /tmp/grub.input

Eine Instanz in libvirt bekanntmachen:
Vorher wurde "roge-subnet-1" definiert, so wie das Subnetz unter [3].

# virt-install -n mein-toller-server -r 512 --vcpus=1 --os-type=linux --os-variant=ubuntuhardy --virt-type=kvm --import --disk /opt/kvm/mein-toller-server/kvm.img --network network=roge-subnet-1,model=virtio --vnc --noautoconsole

Mit etwas Glück läuft anschließend die virtuelle Maschine und ist erreichbar. Falls eine Firewall auf dem Server läuft, sollte man daran denken, die Interfaces entsprechend der neuen Netzwerk-Konfiguration anzupassen.

Für die dd-Aufrufe muss Zeit eingeplant werden. Der erste dauert für diese Größe etwa 30 Minuten, der zweite einige Stunden.

[1] http://searchnetworking.techtarget.com.au/articles/35011
[2] http://blog.pregos.info/2009/09/06/migration-virtueller-maschinen-von-xen-zu-kvm/
[3] http://wiki.hetzner.de/index.php/Netzkonfiguration_für_Xen_und_KVM_mit_libvirt

Selbstgebackenes Sauerteig-Brot

Wer mich kennt, dürfte wissen, dass ich mein Brot seit Jahren tunlichst selber backe. Denen von Euch, die mich schon nach Rezepten fragten, möchte ich endlich mehr liefern als immer nur "Das mache ich irgendwie nach Gefühl".

Mein derzeitiges Standard-Rezept:

Gegeben sei eine Sauerteig-Kultur, die als kleiner Rest (etwa 100 Gramm) die meiste Zeit ihres Daseins im Kühlschrank fristet.

Am Tag des Backens, morgens:

Sauerteig aus dem Kühlschrank nehmen, mit 350 Gramm Vollkornroggenmehl und 350 ml Wasser füttern, gut durchrühren und bei Zimmertemperatur mehrere Stunden stehen lassen. Ich stelle den Pott immer über eine Heizung, damit die Milchsäurebakterien es auch schön kuschelig haben.

Am späten Nachmittag:

70 Gramm Mehrkornmischung (oder Leinsamen oder was ganz anderes) mit 130 ml kochendem Wasser übergießen und stehen lassen.
700 Gramm des Sauerteigs in eine Backschüssel geben, den Rest wieder in den Kühlschrank. Dazu kommen 550 Gramm Weizenmehl, meistens Typ 1050, manchmal aber auch Typ 550 oder eine Mischung aus beiden. Darauf kommen dann etwa 3 Teelöffel Zucker, 2 Esslöffel Salz, etwas Brotgewürz (dafür habe ich immer Fenchel, Kümmel, Koriander und Kardamom in einer Gewürzmühle), und, wenn man es eilig hat (und das habe ich immer), ein Beutel Trockenhefe.
Die festen Bestandteile ein wenig unter das Mehl mischen, damit sich alles gut verteilt. Wenn die Körner auf Handtemperatur abgekühlt sind, schüttet man sie mitsamt des Wassers auf das Mehl.

Nun geht es ans Kneten. Ich mache das mit der Hand, verwende aber manchmal einen Einweghandschuh, denn der Teig klebt wirklich sehr. Wer eine gute Knetmaschine sein Eigen nennt, wird das natürlich damit machen. Einen normalen Handmixer kann man hierfür vergessen; er ist zu schwach, um den schweren Teig zu bewegen.
Wenn man während des Knetens das Gefühl hat, dass das Ganze zu trocken wird, kann man noch vorsichtig Wasser angießen. Aber bloß nicht zu viel, sonst macht man hinterher Fladenbrot!

Ist der Teig fertig, forme ich einen länglichen Laib daraus und lege ihn in einen Gärkorb. Der hat eigentlich nur die Aufgabe, den Teigling während des Gehens in Form zu halten. Die Entnahme des Teiges erfordert ein wenig Übung und funktioniert am besten, wenn man den Teig rundherum mit etwas Mehl bepudert, damit er nicht überall anklebt. Diesen Korb lege ich in den Backofen auf das Backblech und schalte den Ofen auf kleinster Stufe ein, so dass ich darin etwa 30°C habe.

Am frühen Abend:

Nach etwa 2 Stunden ist das Brot dann groß genug geworden und kann gebacken werden. Der Gärkorb wird aus dem Ofen genommen (vorsichtig, nicht zu stark erschüttern) und mit dem umgedrehten Backblech abgedeckt. Den Ofen heize ich auf höchster Stufe vor (wirklich bis zum Anschlag). Wenn der Ofen heiß ist, drehe ich das Blech mit dem Korb vorsichtig um, nehme den Korb ab und schiebe das Blech in den Ofen. Dann drehe ich den Temperaturregler auf 210°C herunter und stelle mir einen Wecker auf 45 Minuten.
Nach 45 Minuten kann das Brot entnommen und zum Abkühlen auf einen Rost gelegt werden. Dabei kann man, wenn man unsicher ist, einmal von unten anklopfen. Wenn es hohl klingt, ist das Brot fertig gebacken.

Mail-Probleme seit der Serverumstellung?

Dieser Hinweis betrifft nur einige User, die über meinen Server ihre Mail abwickeln. Vor einigen Wochen hat der Mail-Server eine neue IP-Adresse bekommen. Normalerweise sollte das kein Problem darstellen. Wer trotzdem seitdem keine Mails abholen und/oder versenden kann, sollte dringend die Server-Einstellungen in seinem Mail-Programm prüfen. Sown Versand als auch zum Empfangen sollte als Server "zombie.rompe.org" eingetragen sein.

Beispielhaft in Evolution geht das folgendermaßen:

  1. Mail-Programm starten
  2. In der Menü-Zeile "Bearbeiten" klicken, dort dann "Einstellungen"
  3. Es öffnet sich der Einstellungsdialog. Dort links "E-Mail-Konten" auswählen
  4. Rechts das Konto anklicken und ganz rechts auf den Knopf "Bearbeiten" klicken
  5. Es öffnet sich der Konteneditor
  6. Hier muss in den Reitern "Abrufen von Emails" und "Verschicken von Emails" jeweils im Feld "Server:" der Name "zombie.rompe.org" eingetragen sein. Steht dort etwas anderes, bitte entsprechend ändern und mit "OK" speichern.

She rules my life


Completely!

ExiFlow - Designing a workflow for digital photographers on Linux

This is one of the things I put my hands on for the past few months. Now that we have released a public alpha version, you are invited to test the whole thing:

ExiFlow

ExiFlow is a set of tools (command line and GUI) to provide a complete digital photo workflow for Unixes. EXIF headers are used as the central information repository, so users may change their software at any time without loosing any data.

Read on to learn more about ExiFlow

Gallery RSS feed reborn

You may have wondered why my gallery's RSS feed wasn't updating for quite some time now. Instead of boring you with explanations for that, I just want to announce that the feed is now working correctly, providing links to new and updated albums.

My extended del.icio.us post bookmarklet for Firefox

Don't panic, I won't join the masses in praising del.icio.us for it's greatness. I have just used it for quite some time now and got slightly addicted to it. Of course I don't use it without any alterations to the standard workflow — that would be dishonourable for any programmer. One thing that I use almost daily is an extended post bookmarklet. It differs from the default posting bookmarklet mainly in these aspects:

  • Selected text get's quoted and inserted into the extended description. Thus, if you select two words on a page and click the post bookmarklet, the extended description will be "two words", including the quotes.
  • If no text is selected, the bookmarklet tries to find a page description in the HTML meta information. If something usefull is found, it get's used as the extended description.
  • Exceptions are caught and displayed as an alert. Sometimes the JavaScript functions used to get text properties are blocked by security features of your browser. If this happens, the results are displayed and the bookmarklet continues to do it's job.

Feel free to use this bookmarklet. Updated will be announced at this page. To use this bookmarklet you will need to create a bookmark with the following link. One of several ways to do that is to simply drag it to your bookmarks toolbar:

del.icio.us post Version 1.1

Update: Fixed the quotation. Now you should get the complete bookmarklet when copying it.

Additional note: Of course, if you want to use the bookmarklet, you will have to replace my del.icio.us username with yours after copying it. To do that, drag and drop the link to your bookmarks toolbar, right click the newly created bookmark and choose "Properties". In the properties dialog, find the name "rompe" in the bookmark address (it's near the end) and replace it with your username. Press "OK". That's it!

Schnell mal das Dateidatum aller Fotos auf das Aufnahmedatum setzen

Als kleine Merkhilfe für mich selbst: Um mal schnell Datum und Uhrzeit von Fotos auf das Im EXIF enthaltene Aufnahmedatum zu setzen, genügt diese Zeile (vorausgesetzt, man hat das geniale ExifTool installiert, aber das sollte man ja ohnehin haben).

for i in *.jpg; do
    touch -d "`exiftool -d '%F %X' -DateTimeOriginal -S -s $i`" $i
done

Variation: Um einen Haufen Fotos tageweise in einzelne Ordner einzusortieren, genügt dieses Kommando:

for i in *.jpg; do
    folder=rundreise_`exiftool -d '%F' -DateTimeOriginal -S -s $i`
    mkdir -p $folder
    mv $i $folder
done

PS: Ich habe die Zeilen der Übersichtlichkeit halber mal auf mehrere Zeilen aufgeteilt. Echte Kerle tippen sowas natürlich trotzem alles in einer Zeile. :-)

Syndicate content