ubuntuusers.de

7. Februar 2009

Seit kurzem habe ich ja rechts ein kleines Widget das alle 5 min ein zufälliges Bild aus einem Pool auswählt und einsetzt. Das dazugehörige Skript habe ich ja auf CodeCocktail gepostet :) Wie man dem ganze leicht entnehmen kann lasse ich das Skript mitloggen wann und wo welches Bild verwendet wurde. Das mache ich nicht um die Load auf zwetschge zu erhöhen sondern um Allerlei lustige Sachen damit anstellen zu können. Mit ein bisschen spicken in “100 Linux Server Hacks” hab ich jetzt aus:

07-02-2009-11:00:01 cp /var/www/emotes/emote46.gif /var/www/emotes/mainemote/emote.gif
07-02-2009-11:05:01 cp /var/www/emotes/emote17.gif /var/www/emotes/mainemote/emote.gif
07-02-2009-11:10:01 cp /var/www/emotes/emote21.gif /var/www/emotes/mainemote/emote.gif
07-02-2009-11:15:01 cp /var/www/emotes/emote12.gif /var/www/emotes/mainemote/emote.gif
07-02-2009-11:20:01 cp /var/www/emotes/emote43.gif /var/www/emotes/mainemote/emote.gif
07-02-2009-11:25:01 cp /var/www/emotes/emote22.gif /var/www/emotes/mainemote/emote.gif
07-02-2009-11:30:01 cp /var/www/emotes/emote23.gif /var/www/emotes/mainemote/emote.gif
07-02-2009-11:35:01 cp /var/www/emotes/emote3.gif /var/www/emotes/mainemote/emote.gif
... (1600 weitere Zeilen)

folgendes er-greppt, gesortet und geuniqed:

7 : /var/www/emotes/emote28.gif
9 : /var/www/emotes/emote26.gif
9 : /var/www/emotes/emote39.gif
9 : /var/www/emotes/emote48.gif
9 : /var/www/emotes/emote49.gif
10 : /var/www/emotes/emote24.gif
10 : /var/www/emotes/emote34.gif
10 : /var/www/emotes/emote41.gif
10 : /var/www/emotes/emote47.gif
11 : /var/www/emotes/emote22.gif
11 : /var/www/emotes/emote29.gif
12 : /var/www/emotes/emote46.gif
13 : /var/www/emotes/emote32.gif
13 : /var/www/emotes/emote37.gif
14 : /var/www/emotes/emote25.gif
14 : /var/www/emotes/emote33.gif
14 : /var/www/emotes/emote42.gif
15 : /var/www/emotes/emote31.gif
15 : /var/www/emotes/emote35.gif
15 : /var/www/emotes/emote36.gif
15 : /var/www/emotes/emote44.gif
15 : /var/www/emotes/emote45.gif
16 : /var/www/emotes/emote43.gif
17 : /var/www/emotes/emote23.gif
18 : /var/www/emotes/emote38.gif
19 : /var/www/emotes/emote27.gif
19 : /var/www/emotes/emote30.gif
19 : /var/www/emotes/emote40.gif
48 : /var/www/emotes/emote4.gif
49 : /var/www/emotes/emote10.gif
51 : /var/www/emotes/emote11.gif
53 : /var/www/emotes/emote0.gif
53 : /var/www/emotes/emote14.gif
53 : /var/www/emotes/emote18.gif
56 : /var/www/emotes/emote3.gif
57 : /var/www/emotes/emote15.gif
57 : /var/www/emotes/emote16.gif
57 : /var/www/emotes/emote5.gif
58 : /var/www/emotes/emote19.gif
58 : /var/www/emotes/emote1.gif
58 : /var/www/emotes/emote7.gif
59 : /var/www/emotes/emote12.gif
59 : /var/www/emotes/emote17.gif
59 : /var/www/emotes/emote9.gif
62 : /var/www/emotes/emote21.gif
63 : /var/www/emotes/emote8.gif
67 : /var/www/emotes/emote2.gif
71 : /var/www/emotes/emote6.gif
74 : /var/www/emotes/emote13.gif
74 : /var/www/emotes/emote20.gif

Grob gesagt ist emote20 das am öftesten per Zufall gewählte GIF und das 28. das am wenigsten ausgewählte. Wie das zu machen ist ist garnicht so schwer wies eigentlich aussieht :) Der Befehl lautet wie folgt:
for x in `cat /var/log/emote.log | awk '{print $3 }' | sort | uniq`; do grep $x /var/log/emote.log | wc -l | tr -d '\n'; echo " : $x"; done | sort -k 2 -rn | sort -n >> /var/log/emote.score.log

Es sieht am Anfang etwas seltsam aus das gebe ich zu. Aber eigentlich ist es nicht anderes als eine Schleife die Systematisch eine geordnete Ausgabe durchgeht :) . Um diese lange Kette aus Befehlen nicht jedesmal eintippen zu müssen, hab ich mir einen CronJob eingerichtet der eben diesen Score generiert, in eine Datei speichert und mir täglich um 6:25 per Email zusendet.
Kontrollwahn ole.

Pdf ist kein proprietäres Dateiformat mehr. Der Adobe Reader aber ist proprietär und wird häufig genutzt. Unter Ubuntu sind freie Alternativen vorinstalliert, unter Windows jedoch sind die anderen Programme kaum bekannt. Und auch unter Ubuntu wird sicher häufig der Adobe Reader nachinstalliert.

Um die freien Alternativen ins Bewusstsein zu rufen hat das Fellowship der Free Software Foundation Europe die Kampage pdfreaders.org ins Leben gerufen.

Auf der Seite werden nicht nur Alternativen zum Adobe Reader aufgelistet, sondern auch Buttons zum Einbinden angeboten.

Eine alternative Ubuntu-Liste gibt es natürlich im Wiki.

Ich persönlich nutze noch den xpdf, werde mir aber bei der Gelegenheit moderne Alternativen anschauen. Also:

pdfreaders.org

via

6. Februar 2009

Das Tolle an Open Source, ist der “Open Source” Teil! Es liegen überall die Quelltexte vor, man kann hineinschauen und bei Bedarf Teile ändern. Seit längerer Zeit stören mich zwei Sachen an der Sidebar des Nautilus-Dateibrowsers: Ich hätte die Icons gerne größer und da ich eh nur den Reiter “Orte” nutze, ist der obere teil der Sidebar für mich völlig unnütz.

Nach ein bisschen Googelei Recherche fand ich einen guten Ansatz und kam, nach ein bisschen Eigenarbeit auch zum gewünschten Ziel:

Der Sidebarheader ist verschwunden, und die Icons lassen sich in jeder beliebigen Größe darstellen! :)

Und so geht’s:

Die Nautilus Sourcen besorgen (landen im Home):

apt-get source nautilus

Build Dependencies auflösen:

apt-get build-dep nautilus

Zum ändern der Icongröße die Datei ~/nautilus-2.24.1/src/nautilus-places-sidebar.c editieren (Zeile 224):

icon_size = nautilus_get_icon_size_for_stock_size (GTK_ICON_SIZE_MENU);

ersetzen durch (Wert in Pixel, jede Angabe möglich):

icon_size = 24;

Zum entfernen des Sidebarheaders Datei ~/nautilus-2.24.1/src/nautilus-side-pane.c editieren (Zeile 322):

gtk_box_pack_start (GTK_BOX (side_pane), frame, FALSE, FALSE, 0);

einfach auskommentieren:

//gtk_box_pack_start (GTK_BOX (side_pane), frame, FALSE, FALSE, 0);

Abschließend Nautilus kompilieren, installieren, neustarten und die neue Sidebar genießen ;)

./configure --prefix=/usr
make
make install
killall nautilus

Vor einiger Zeit hatte ich schon einmal über den NX Server und die Möglichkeit des SSH Doppeltunnels berichtet. Da ich in letzter Zeit immer wieder mal bei Freunden Hilfestellung in Sachen Ubuntu gegeben habe, habe ich ein kleines Script geschrieben, welches überprüft, ob ein SSH- und ein NX-Server installiert sind und gleich eine Verbindung zu einem vorher konfigurierten Rechner aufbaut. Nun kann man sich einfach mit einer Konsole bzw. einem NX Client verbinden und den nötigen Support erteilen. Dies sieht dann z.B. so aus:

ssh -p 2022 benutzer@localhost

Natürlich kann man sich auch direkt auf den SSH Server des “Hilfesuchenden” verbinden, doch mit Hilfe eines SSH Doppeltunnels braucht er/sie sich nicht um irgendwelche Porteinstellungen am Router kümmern. Weiterhin kann man damit auch abgeschottete Rechner erreichen,  die die Außenwelt nur über Port 80 oder 443 erreichen (in diesem Fall sollte man den eigenen SSH Server z.B. auf Port 443 laufen lassen).

Hier das Script:

#!/bin/bash
#SSH installiert?
echo "Überprüfe, ob SSH Server installiert ist..."
tester=`dpkg -l | grep openssh-server`
if [[ "$tester" =~ "openssh-server" ]]
then
  echo "SSH Server ist installiert."
else
  echo "SSH Server wird installiert. Wird installiert..."
  sudo apt-get install openssh-server
fi

#NX installiert?
echo "Überprüfe, ob NX Server installiert ist..."
tester=`dpkg -l | grep nxserver`
if [[ "$tester" =~ "nxserver" ]]
then
  echo "NX Server ist installiert."
else
  echo "NX Server wird installiert"
  wget http://64.34.161.181/download/3.3.0/Linux/nxclient_3.3.0-6_i386.deb
  wget http://64.34.161.181/download/3.3.0/Linux/nxnode_3.3.0-12_i386.deb
  wget http://64.34.161.181/download/3.3.0/Linux/FE/nxserver_3.3.0-15_i386.deb
  sudo dpkg -i nxclient_3.3.0-6_i386.deb
  sudo dpkg -i nxnode_3.3.0-12_i386.deb
  sudo dpkg -i nxserver_3.3.0-15_i386.deb
fi

#SSH Tunnel aufbauen
#Port, Benutzer und Rechner anpassen!
ssh -p 123 benutzer@deinRechner -R 2022:localhost:22

Und hier im pastebin.

Dies ist eines meiner ersten Scripte und ich freue mich über Verbesserungsvorschläge.

So, meine bessere Hälfte ist auf einem Lehrgang, Zeit für mich, mich um die Hunde zu kümmern und ein Downgrade auf Hardy durchzuführen.

Warum? Nun, zumindest bei meiner Frau und mir, hat sich Intrepid nicht als stabile Alternative offenbart. Neben Abstürzen gab es auch Probleme mit dem Nvidea-Grafiktreiber.

Die Probleme gab es mit Hardy nicht, also zurück.

Das ganze läuft übrigens ähnlich schmerzarm, wie eine Neuinstallation und ist inklusive Migration der Daten nach zwei Stunden abgeschlossen.

5. Februar 2009

Da ich recht viel an Webseiten mache und vor nicht all zu langer Zeit von Phase 5 auf Bluefish umgestiegen bin, hat sich ein Problem ergeben, dessen Ursache ich überall gesucht habe und letztendlich dann am Editor lösen musste. Jedes mal, wenn ich eine Webseite mit Umlauten erstellt habe, kam es zu sonderbaren Zeichen an besagter Stelle und auch die meta Angaben konnten nur bedingt Abhilfe schaffen. Sie Schuld habe ich überall vermutet, beim Browser angefangen, bis auf falsche meta Angaben und letztendlich habe ich dann mein FTP-Programm begutachtet, bis ich die Ursache wie gesagt in Bluefish fand. So war dort direkt eine falsche Zeichencodierung eingestellt.

Die Dauerhafte Lösung des Umlaute-Problem sieht folgendermaßen aus:
1. In Bluefish auf Bearbeiten und dann auf Einstellungen klicken
2. danach im Reiter auf Dateien
3. dort bei Standardzeichensatz einfach auf ISO-8859-1 stellen.
4. OK klicken und fertig

Recht einfach, wenn man weiß woran es lag ;-)

(update)
Wer nun Probleme mit dem € Zeichen hat, kann einfach & euro; schreiben (bitte das Leerzeichen hinter & weglassen)

Wem das oben nicht zusagt, kann natürlich auch den Zeichensatz auf ISO-8 lassen und dann einfach die Umlaute maskieren. Mehr dazu hier: http://de.selfhtml.org/html/referenz/zeichen.htm

[Update]Da Launchpad die Art geändert hat wie die OpenPGP-Keys auf der jeweiligen PPA-Seite erscheinen, hier ein Update des Skriptes[/Update]

So schnell kanns gehen, gestern noch aktuell, heute schon wieder komplett veraltet, naja fast.

Gestern gabs ja das Skript zum Import der PPA-Keys, ihr erinnert euch...

In den unglaublich zahlreichen Kommentaren ;-) kam die Idee auf, das ganze so umzugestalten das einfach automatisch alle Keys der in der sources.list aufgeführten PPAs heruntergeladen werden.

Et Voila:

Einmal als Paste

Und einmal zum Download

Nach dem Download die Datei ausführbar machen
chmod +x import-all-ppa-keys
und ausführen
import-all-ppa-keys [pfad zur sources.list]

zum Beispiel:

import-all-ppa-keys /etc/apt/sources.list.d/eure.sources.list

Beim ausführen werden alle OpenPGP Keys aus den Seiten extrahiert und ins lokale “apt-System” importiert.

Einen weiteren Vorteil hat das ganze auch noch. Ich beginne mich langsam mit sed anzufreunden.

Tags: | | | |

4. Februar 2009

Ich sichere nach wie vor geschäftsrelevante Daten auf DVD, allerdings stellte mich keine der fertigen Lösungen vollkommen zufrieden. Meine Anforderungen:

  • Starke Verschlüsselung: Das Backup muss sicherer sein als diese unsägliche ZIP-Verschlüsselung hinreichend sicher sein und ein statistischer Angriff soll keinen Erfolg versprechen.

  • Gute Komprimierung: Ich möchte in kurzer Zeit das Backup klein eindampfen können und beim Zugriff effizient entpacken, also nur die Dateien, die ich benötige.

  • Mountbares Backup: Ganz ohne vorheriges Entpacken soll ein sofortiger Zugriff auf alle Dateien im Backup möglich sein.

  • Keine unverschlüsselten temporären Dateien: Weder beim Packen noch beim Entpacken sollen unverschlüsselte temporäre Dateien anfallen, einerseits aus Sicherheitsgründen, andererseits weil eine temporäre Datei auf einem zufällig verschlüsselten Dateisystem Prozessorlast erzeugt.

Bis vor kurzem habe ich einfach Archive mit Tarballs mit Twofish verschlüsselt (openssl bietet ein komfortables Subkommando) und diese auf DVD gebrannt. Neben den oben genannten Nachteilen kam das Problem dazu, dass auf einem ISO-9660-Dateisystem die Dateigrößengrenze bei 2GB lag.

Meine Lösung sah eine Kombination aus bekannten Technologien vor: Eine Containerdatei sollte per losetup zum blockorientierten Gerät mutieren, dort wiederum sollte mit cryptsetup ein verschlüsselter Datenträger entstehen, der wiederum ein komprimiertes Squashfs-Dateisystem aufnehmen sollte. Klingt kompliziert? Ist es aber nicht:

Benötigt werden die im Tutorial /home reisetauglich verschlüsselt erwähnten Pakete und die squashfs-tools sowie SquashFS-Module für den laufenden Kernel.

Anlegen des Containers und Befüllen mit Daten

Zuerst wird ein Container angelegt, verschlüsselt und dann mit Daten gefüllt

  • Erstellen des Containers: Ein Sparse-File mit der maximal zulässigen Größe einer DVD5 (4700372992 Bytes oder 2295104 Blöcke — bei einer DVD9 müssten es 4150388 Blöcke sein) entsteht mit dem folgenden Befehl. Die Datei belegt am Anfang nur 2048 Byte, angezeigt wird dennoch die maximale Größe:

    dd if=/dev/zero bs=2048 count=1 seek=2295103 of=crypt_squash.data
  • Erstellen eines Loop-Devices: Mittels losetup entsteht jetzt eine der Datei zugeordnete Blockdevice:

    losetup /dev/loop0 crypt_squash.data

    Sollte /dev/loop0 bereits besetzt sein, zeigt losetup -f freie Loop-Devices.

  • Erstellen des Containers: Auf der Loop-Datei wird nun das verschlüsselte Blockgerät vorbereitet:

    cryptsetup luksFormat -c aes-cbc-essiv:sha256 -s 256 -y /dev/loop0
  • Öffnen des verschlüsselten Gerätes: Nun wird die verschlüsselte Gerätedatei geöffnent. Das Resultat ist ein Blockdevide /dev/mapper/cryptdvd auf das geschrieben werden und von dem gelesen werden kann. Die Verschlüsselung erfogt hier komplett transparent:

    sudo cryptsetup luksOpen /dev/loop0 cryptdvd
  • Erstellen des komprimierten Dateisystems: In /dev/mapper/cryptdvd entsteht nun das komprimierte Dateisystem SquashFS. Weil wir in eine Gerätedatei schreiben, muss explizit -noappend angegeben werden, um diese zu überschreiben. Die restlichen Parameter sind Kosmetik: Ich bevorzuge noch aus Kompatibilitätsgründen Komprimierung mit gzip und möchte nur einen Prozessor einspannen.

    mksquashfs Projekte WichtigeDaten /dev/mapper/cryptdvd  -nolzma -check_data -noappend -processors 1

Test des Containers

Nun ist der Test des Containers dran. Funktioniert das Backup so, wie wir es uns vorgestellt haben?

  • Mounten des Containers: Das Cryptdevice existiert ja noch, mounten wir es einfach:

    mkdir /tmp/cryptdvd
    mount /dev/mapper/cryptdvd /tmp/cryptdvd/

    Falls ein unbekanntes Dateisystem angegeben wird, sollten Sie sicherstellen, dass das SquashFS-Modul geladen ist und gegebenenfalls den Dateisystemtyp angeben:

    mount -t squashfs /dev/mapper/cryptdvd /tmp/cryptdvd/
  • Unmounten:

    umount /dev/mapper/cryptdvd
  • Auflösen des Cryptdevices:

    cryptsetup luksClose /dev/mapper/cryptdvd
  • Lösen des Loop-Devices: So stellen wir sicher, dass auch alle Daten im Container gelandet sind und wir gefahrlos brennen können:

    losetup -d /dev/loop0

Brennen der DVD

  • Brennen der DVD: cdrecord ist es herzlich egal, was für Daten da gebrannt werden, es bannt unseren Container 1:1 auf den optischen Datenträger:

    cdrecord -v -speed=4 -dev=/dev/scd1 crypt_squash.data

Test der gebrannten DVD — Mounten und Unmounten des Backups

  • Loop-Device erstellen: Zunächst entsteht ein Loopdevice auf der gebrannten DVD. Es könnte eigentlich auch ohne funktionieren:

    losetup /dev/loop1 /dev/scd1
  • Öffnen des Crypt-Devices: Jetzt wird die Datei /dev/mapper/cryptdvd erzeugt, welche die Entschlüsselung transparent macht. Hier ist die Eingabe des Passwortes erforderlich:

    sudo cryptsetup luksOpen /dev/loop1 cryptdvd
  • Mounten des Dateisystems: Möglicherweise ist die Angabe des Dateisystemtyps erforderlich:

    mount /dev/mapper/cryptdvd /tmp/cryptdvd/
  • Unmounten wie oben:

    umount /dev/mapper/cryptdvd
  • Lösen des Crypt-Devices:

    cryptsetup luksClose /dev/mapper/cryptdvd
  • Lösen des Loop-Devices:

    losetup -d /dev/loop1

    Nun kann die DVD entnommen werden.

Die meisten der angegebenen Schritte lassen sich leicht automatisieren, so dass sichere Backups sehr einfach durchgeführt werden können und der Zugriff genauso einfach möglich ist. Ein Manko bleibt: Für das Hinzufügen neuer LUKS-Schlüssel muss der Container natürlich mit dd auf Festplatte transferiert und in ein Loop-Device überführt werden, bevor er neu gebrannt wird.

Nachtrag I: Ich stelle diesen Artikel hiermit unter BY-SA zur Verfügung. Wer möchte, kann ihn also per Copy und Paste ins UbuntuUsers-Wiki (oder andere Wikis) übernehmen und dort weiterbearbeiten, solange auf mich als Urheber verwiesen wird. Viel Spaß damit! creativecommons.org/licenses/by-sa/3.0/de/

Nachtrag II: Da einige Community-Wikis NC-BY-SA verwenden und BY-SA nicht nach NC-BY-SA überführt werden kann, zusätzliche Bereitstellung unter NC-BY-SA. Viel Spaß damit! creativecommons.org/licenses/by-nc-sa/3.0/de/

[Update]Hier gibts eine etwas verbesserte Version des Skriptes, das automatisch alle Keys für die in der sources.list vorhandenen PPAs importiert[/Update]

In der neuesten Version unterstützt das Launchpad PPA System auch endlich das signieren der PPAs. Allerdings ist das Hinzufügen der Keys in das lokale System durchaus als Quälerei zu bezeichnen (hier ist der Prozess beschrieben).

Darum hier ein kleines Skript, welches das ganze ein wenig vereinfachen sollte:

#!/bin/bash
# Script for retrieving and adding
# Launchpad PPA OpenPGP keys to the local system.

if [ "$1" != "" ]; then
string=`curl -s $1 | grep 'OpenPGP key' | sed -e 's/.*code>\(.*\)<\/code.*/\1/'`
echo "$string"

gpg --no-verbose --no-default-keyring --keyring /tmp/tmp.keyring --keyserver keyserver.ubuntu.com --recv $string&& gpg --no-default-keyring --keyring /tmp/tmp.keyring --export --armor $string | sudo apt-key add - && rm /tmp/tmp.keyring
if [ $? = 0 ]; then
echo ""
echo "Key successfully imported"
echo ""
exit 0
elif [ $? = 1 ]; then
echo ""
echo "An error occured, please check the PPA URL"
echo ""
fi
else
echo "Please use the right syntax:"
echo "import-ppa-key [PPA URL]"
echo "PPA URL looks like this: https://edge.launchpad.net/~user/+archive/ppa"
exit 1
fi

Das ganze gibts auch nochmal hier im noPaste-Service: http://paste.pocoo.org/show/102735/
Oder hier direkt als Datei zum herunterladen: http://zeroathome.de/files/import-ppa-key

Wie immer, nicht schön, aber es funktioniert ;-)

Nach dem Download die Datei ausführbar machen
chmod +x import-ppa-key
und ausführen
import-ppa-key [PPA URL]
der Parameter [PPA-URL] sollte folgendermaßen aussehen:
https://edge.launchpad.net/~user/+archive/ppa

zum Beispiel:

import-ppa-key https://edge.launchpad.net/~transmissionbt/+archive/ppa

Beim ausführen wird der OpenPGP Key aus der Seite extrahiert und ins lokale "apt-System" eingefügt.

Tags: | | | |

Im Internet gibt es zahlreiche Seiten die von einem verlangen sich zu registrieren. Bei Foren war dies schon immer ein defacto Standard, doch seit dem Web2.0 Boom meint jeder Hinz und Kunz auf seiner Seite eine Registrierung für einen Service verlangen zu können der auch komplett ohne jegliche Registierung auskommen könnte (bestes Beispiel dafür ist imo die Times). Doch auch bei Foren oder Bugtrackern ist es manchmal einfach nur nervig, wenn man nur mal kurz eine kleine Frage hat oder einen Bug melden möchte sich gleich anmelden zu müssen. Wenn man dann überall seine richtige E-Mail Adresse angibt wird man schnell merken, dass das Spamaufkommen merklich ansteigen wird. Doch das Angeben einer gültigen E-Mail Adresse ist meist Pflicht weil die Betreiber eine E-Mail mit einem Link darin verschicken, den man anklicken muss um die Registrierung ab zu schliessen.

Um einmal mit Fakedaten solche Pflichtregistrierungen sinnlos zu machen und um sich vor Spam zu schützen gibt es inzwischen zahlreiche Trashmail Anbieter die einem eine Wegwerfadresse anbieten. Von solchen Adressen kann man meist keine E-Mails versenden sondern nur Empfangen, was für den Zweck von Registierungsmails aber vollkommen ausreichend ist. Die verschiedenen Anbieter lassen sich grob in drei Kategorien einteilen.

1.) schnelle Registrierung: Solche Anbieter geben einem oft ein vollwertiges Mailkonto (jedoch nur auf den Empfang von Emails beschränkt wobei es auch da Ausnahmen gibt), manchmal auch nur für einen kurzen Zeitraum begrenzt und verlangen zur Registrierung selbst nur einen Username und Passwort und sonst nichts. Vorteil ist, dass nur man selbst Zugriff auf die E-Mails hat. Nachteil jedoch, dass man sich, wenn auch sehr schnell, aber doch trotzdem registrieren muss.

2.) Weiterleitung: Einige Anbieter offerieren eine Weiterleitung. Sprich man kann sich E-Mails von einer beim Anbieter schnell einzurichtenden Wegwerfadresse zu seiner richtigen Adresse weiterleiten lassen, meist auf einen bestimmten Zeitraum beschränkt. Man gibt bei einer Registrierung dann die Wegwerfadresse an und bekommt die notwendige Bestätigungsmail der Registrierung dann an seine richtige weitergeleitet. Damit bekommt derjenige wo man sich registriert nicht die richtige E-Mail Adresse zu sehen sondern nur die Wegwerfadresse. Manche dieser Anbieter verlangen keine Registrierung, manche jedoch eine schnelle Registrierung wie unter 1.) erläutert. Vorteil ist wieder, dass nur man selbst Zugriff auf die E-Mails hat. Nachteil dieser Methode jedoch, dass man dem Trashmail Anbieter vertrauen muss, denn schliesslich erfährt dieser die richtige E-Mail Adresse und was der damit macht ist fraglich. Ich halte diese Anbieter deswegen für die schlechtesten unter den drei Kategoriern.

3.) Keine Registrierung: Bei diesen Anbietern muss man keinerlei Daten angeben sondern erhält direkt wenn man auf die Seite geht eine zufällige oder frei wählbare E-Mail Adresse. Vorteil ist einfach, dass man innerhalb von Sekunden eine E-Mail Adresse hat. Nachteil jedoch, dass jeder der möchte die empfangenen E-Mails ebenfalls lesen kann, wenn er nur den Namen der E-Mail Adresse kennt. Dies ist meist jedoch vollkommen egal, weil alles was er finden wird eine E-Mail mit einem Registierungslink darin ist. Nach einem Zeitraum von 1-24h, je nach Anbieter, werden die E-Mails die ein Account empfangen hat gelöscht.

Ich persönlich finde für Zwangsregistrierungen die dritte Kategorie am besten. Leider gibt es von diesen Anbietern jedoch bei weitem nicht so viele wie von den anderen beiden Kategorien.

Ich habe fünf dieser Anbieter gefunden, doch weitere wurden bisher in den Kommentaren zu diesem Artikel veröffentlicht welche ich ans Ende der Liste eingefügt habe. Danke an die jeweiligen Poster!

registrierungsfreie Trashmail Anbieter:
http://dodgit.com
http://www.guerrillamail.com
http://www.mytrashmail.com
http://tempinbox.com
http://spam.la
http://spamavert.com
http://trash-mail.com
https://anonbox.net
http://www.sofort-mail.de
http://10minutemail.com/10MinuteMail
http://www.mailinator.com
http://www.maileater.com
http://www.slopsbox.com

... will nicht so recht unter Ubuntu laufen.

Scheinbar haben die Leute von Google einen Fehler in einer mitgelieferten Bibliothek namens libcrypto.so.0.9.8

Diese muss einfach mittels mv ~/google-earth/libcrypto.so.0.9.8 ~/google-earth/libcrypto.so.0.9.8.defekt umbenannt werden, dann funktioniert es auch.

Mehr zufälligerweise bin ich auf Shoutcast TV gestossen. Ich habe versucht in VLC so eine Art Lesezeichen für meine beiden Webradio Streams einzurichten, hatte nicht richtig hingeschaut, als ich Shoutcast gesehen hatte. Da es einen sehr klasse Shoutcast Stream “Grooviestgerman” gibt, habe ich etwas verwundert geschaut, als ich meinen Stream nicht, aber dafür andere merkwürdige deutsche Streams gefunden, angeklickt und verwundert angeglotzt habe. Da ist mir dann ein Licht aufgegangen, dass ich es hier mit einer Mischung aus Radio und Webcam zu tun habe.

Eigentlich eine tolle Mischung und eine schöne Nische für Amateure und Leute die Radio im Internet machen können. Wer das ganze noch etwas professioneller mit “Anrufern” machen will, der nimmt sich eine zweite Person mit dazu und einen Teamspeak Server. Die zweite Person nimmt die Teamspeak Besucher auf und leitet das an den Moderator weiter.

Allerdings findet man natürlich auch einen Haufen Schrott. Leute die völlig verpeilt vor der Webcam sitzen und Teile eines Chats mit einem Lachanfall kommentieren und verzweifelt vor sich hin nuscheln.

Die eine oder andere Perle ist sicherlich drunter (z.B. Demoscene.tv), aber das muß jeder für sich selbst entscheiden und finden. Witzige Sache auf jeden Fall.

3. Februar 2009

Durch Crackpod und AtzeEgge von Codecocktail bin ich auf Teeworlds aufmerksam geworden. Crackpod der einen Aimbot dafür geschrieben hat und AtzeEgge der wie jeder normale Mensch fair spielt ;) Das ganze ist ein extrem witzig und dynamisches 2D ShooterSpiel geworden. Man könnte es auch Echtzeit Worms nennen :) Das es auch noch OpenSource ist macht den Shooter nur noch attraktiver :) Es lief letztlich drauf hinaus das mein Server zwetschge.org für einen GameServer herhalten muss :D .

Der Server ist über die MasterServer von Teeworlds erreichbar unter dem Namen [JustForFun]zwetschge.org|noqqe.de und wird (was mich wundert) mit gutem Ping relativ häufig bespielt(auch via IP-Connect mit zwetschge.org:8303 erreichbar). Sollte jemand das Bedürfnis bekommen mich oder die anderen von CodeCocktail mal “ownen” oder “bashen” zu wollen – kann dieser jemand das nun tun. Ich stell damit sogar die Mittel :) .

Um aber mal zum technischen Teil zu kommen: Ist ein Teeworlds-Server sehr einfach aufzusetzen.

  • Aktuelle Version runterladen : http://teeworlds.com
  • teeworlds0.x.x.tar.gz entpacken (wahlweise mit unpack ;) keine Schleichwerbung eigentlich..)
  • mit dem Wechsel in das entsprechende Verzeichnis und ausführen ” ./teeworlds_srv” kann der Server das erste mal gestartet werden (allerdings ohne Konfiguration! nicht zu empfehlen)
  • Um die gewünschte Konfiguration einzustellen gibt es eine Liste mit Config-Details auf http://www.teeworlds.com/?page=docs&wiki=SettingUpAServer
  • ” vim twserver.cfg” anlegen und  mit Konfigurationen befüllen. Beispiel Konfiguration:
    sv_name Teeworlds sample dm
    sv_map dm1
    sv_scorelimit 20
    sv_timelimit 10
    sv_gametype dm
    sv_rcon_password remember
    sv_motd Teeworlds sample dm configuration
    sv_max_clients 12
    sv_spectator_slots 10
  • Den Server mit Configfile starten ” ./teeworlds_srv -f twserver.cfg “
  • Happy Bashing.

So würde das gehen. Wenn da nicht noch ssh Session ins Spiel kommen würde. Ich muss sagen das teeworlds_srv eine kleine Macke hat. Diese Executeable öffnet einen Prozess. Schön oder? Wäre meine ssh-Session damit nicht unbrauchbar wärs schön. Der Prozess spielt sich quasi im Vordergrund ab und startet nicht wie üblich einen Hintergrundprozess mit dem ich weiter arbeiten kann. Sobald ich nun aber mein Terminal Fenster schliesse… wars das mit meinem Game-Server. Abhilfe schafft aber ein Paket namens screen das im Debian Repository ist. Dieses Programm zielt genau auf solche Fälle ab.

  • apt-get install screen
  • ” screen ./teeworlds_srv -f twserver.cfg ” (öffnet den Vordergrund Prozess in einem Virtuellen Terminal in dem der TeeworldsServer jetzt läuft)
  • mit Strg+A+D kann man diesen Modus nun wieder verlassen und die SSH Session schliessen.
  • Angenommen man will den Server aber trotzdem nachher noch einmal begutachten: ” screen -r ” zeigt offene Screens an. So ist das Problem super gelöst

Der Server auf zwetschge.org bleibt denke ich längerfristig bestehen und wird in die Projects hinzugefügt. Vielleicht sieht man sich ja mal :)
Happy Bashing


Gerade eben bin ich hier auf ein Applet gestoßen, mit welchem man schnell und einfach aus GNOME heraus einen Beitrag für seinen Blog verfassen kann.

Das Applet lässt sich über die Paketverwaltung installieren:

sudo apt-get install gnome-blog

Anschließend braucht man es nur noch dem Panel hinzufügen und entsprechend seinen Blog eintragen. Unterstützt werden folgende Blogs:

  • Blogger.com / Blogspot.com
  • Advogato.org
  • Movable Type
  • WordPress
  • LiveJournal.com
  • Pyblosxom
  • Alle anderen Blogs, die die bloggerAPI oder MetaWeblog verwenden

Klickt man auf das Applet im Panel öffnet sich ein einfacher Editor, in welchem man dann seinen Beitrag verfassen kann. Diesen Beitrag habe ich mit diesem Tool gleich einmal verfast. Leider fehlt die Möglichkeit Tags bzw. Kategorien hinzuzufügen.

Das habe ich nicht gewusst. Zufällig bei der Recherche von ganz anderen Fehlermeldungen bin ich darüber gestolpert (wo das war kriege ich jetzt nicht mehr heraus). Ich hab gedacht, dass betrifft mich eh nicht, weil ich keine Modeline nutze. Aber da stand noch eine völlig unnötige kleine Modeline versteckt in der xorg.conf.

Deshalb also ging vorher nichts. Der fglrx aus den Quellen nicht, der manuell installierte aktuelle nicht, der per envy installierte aktuelle nicht. Statt bluescreen kam ein blackscreen, nichtmal die Konsole erschien dann noch.

Vielleicht fielen hier auch mehrere Fehlerquellen zusammen und der fglrx aus den Hardy-Quellen funktionierte gar nicht wegen der Modeline nicht. Ausschließen kann ich das nicht. Trotzdem ist es einen Versucht wert: Wenn fglrx bei einer Radeon 9800 nur einen schwarzen Bildschirm produziert (der auch nach einem Wechsel in die Konsole nicht verschwindet), sollte man etwaig genutzte Modelines aus der xorg.conf entfernen.

Immer wieder ist der externe Bildschirm am Medion Akoya Mini S1210 ausgefallen bzw. hat nur noch eine einzige Farbe angezeigt. Nach langer Fehlersuche und verzweifelten Stunden habe ich nun eine Lösung gefunden, die so einfach wie gut ist. Vorweg sei gesagt, ich habe in der Bildschirmverwaltung von Ubuntu den kleinen Bildschirm des Medion auf Off gesetzt, damit dieser nicht blendet wenn man eh nur am großen arbeitet. Nun ist in unregelmäßigen Abständen das o.g. Problem aufgetreten, wobei man das Notebook erst schlafen legen und wieder aufwecken musste um wieder ein Bild zu haben.

Die Lösung:
beide Bildschirme werden in der Software (Bildschirmauflösung) angeschaltet gelassen und dann einfach den Bildschirm des Medion zuklappen... dieser wird nun hardwareseitig abgeschaltet. Nun ist allerdings noch zu beachten, dass man unter System - Einstellungen - Energieverwaltung : beim Menüpunkt "Beim schließen des Deckels" ignorieren ausgewählt hat, sonst wird auch der externe Bildschirm dunkel.

Keine einwandfreie Lösung (Ursache / Wirkung), aber der externe Bildschirm bleibt nun an.

Es ist geschafft, ein weiterer Sieg über das iPhone ist errungen! Nachdem ich nun schon meine PIM Sync-Problematik in den Griff bekommen habe, war das nächste Ziel die Musik ohne Windows und ohne iTunes auf das iPhone zu bekommen.

Also ein bisschen gegoogelt und nach knapp einem Tag lief es dann auch. Somit muss ich die Windows VM nur noch ab und an mal starten um ein Backup zu machen, um für Wiederherstellungen durch die viele Spielerei gewappnet zu sein.

Es gibt im Internet eine Reihe, meist englischsprachiger, Anleitungen zum Thema. Diese dienen als Grundlage für diese Anleitung und werden an den jeweiligen Stellen verlinkt. So, und nun gehts los:

Grundlagen sind ein iPhone Classic mit 2.2.1 Firmware, Ubuntu Intrepid Ibex, Amarok 1.4.10 und ein funktionierendes WLAN.

1. Jailbreaken

Voraussetzung ist ein gejailbreaktes iPhone auf dem OpenSSH installiert ist. (Mal nach QuickPWN und Cydia googeln ;) ) Dies ist dann auch der einzige und letzte Schritt bei dem Windows gebraucht wird. Anzumerken ist, dass der Jailbreak, zumindest bei mir, nicht in der Virtualbox VM funktioniert hat.

2. IP Adressen und /etc/hosts

Das iPhone braucht eine feste IP um gemountet zu werden. Dies geht relativ einfach: Man bekommt von seinem Router eine Adresse über DHCP und drückt dann im iPhone in der WLAN Verwaltung auf den “Statisch” Button. Dadurch werden die aktuellen Einstellungen vom DHCP Server fest übernommen.

Der einfachheitshalber erstellt man sich dann noch einen Eintrag in der /etc/hosts Datei, zum Beispiel folgendermaßen:

192.168.178.21 iphone

Wobei natürlich die IP Adresse durch eure IP Adresse geändert werden muss.

3. Automatische Displaysperre deaktivieren

Da das iPhone offiziell nichts vom Sync-Vorgang mitbekommt, geht es bei Nichtbenutzung in den Standbymodus. Da im Standby das WLAN ausgeschaltet wird, ist es eher suboptimal für unser Vorhaben. Daher die Automatische Displaysperre auf “nie” stellen.

4. iPhone unter Ubuntu

(Quellen:
http://lifehacker.com/388785/sync-your-iphone-wirelessly-in-linux

https://help.ubuntu.com/community/PortableDevices/iPhone)

Hat man nun ein offenes iPhone und die IP Adressen richtig vergeben, installiert man sich das Paket ipod-convenience, welches in den Intrepid Quellen verfügbar ist.

Man wird während der Installation aufgefordert den Mountpunkt des iPhones anzugeben. Dort nimmt man zum Beispiel /media/iphone

Als nächstes wird man aufgefordert die IP Adresse des iPhones anzugeben. Aufgrund des Eintrages in der hosts Datei reicht: iphone

Für den nächsten Schritt MUSS das iPhone zwingend über das USB Kabel angeschlossen werden! Es werden USB-Hashwerte für die iTunes DB auf dem iPhone generiert.

Das Paket ipod-convenience stellt die Pakete iphone-mount und iphone-umount bereit.

Es wird nun auf der Konsole iphone-mount ausgeführt. Es wird beim ersten Mal sehr lange dauern. Bei mir war es gefühlt über eine Minute. In dieser Zeit werden die SSH Schlüssel erzeugt.

Sind die Schlüssel erzeugt, muss man das Passwort für den Root-Account zweimal auf dem iPhone eingeben. (Bei den meisten dürfte dies “Alpine” sein.)

Nun ist das iPhone als iPod unter /media/iphone eingebunden. Besonders komfortabel ist es aber noch nicht, da mein beim mounten und beim unmounten (was übrigens mit dem Befehl iphone-umount funktioniert) immer das Passwort eingeben muss.

5. Passwortloser Zugriff

Unter Linux gibt es die Möglichkeit sich anstelle eines Passwortes mit RSA-Keys zu authentifizieren. Da das iPhone Darwin als Grundlage hat, also auch ein Unix-Derivat, funktioniert diese Möglichkeit dort.

Dafür einfach folgende Sachen per Copy und Paste abtippen:

(Die Vorsichtigen unter Euch sollten sich dieses HowTo durchlesen: short and sweet guide to changing your iPhone/iPod touch password Dort wird erklärt, wie man das Passwort für den Root-Benutzer auf dem iPhone ändert. WICHTIG: NIEMALS das Passwort mit passwd ändern! Dies führt zu einem iPhone, welches sich immer wieder neustartet!)

UPDATE: Laut Michi war der Fehler in passwd wohl nur bei der 1.x Firmware. Bei der 2.x sollte es mit passwd gehen. Ich übernehme allerdings keine Haftung dafür. Zerstörte iPhones sind euer Problem ;)

ssh-keygen -t rsa
ssh root@iphone (Alpine oder das oben von euch geänderte)
mkdir ~/.ssh
chmod go-w / ~
cp /etc/ssh/ssh_config /etc/ssh/ssh_config.bak
echo AuthorizedKeysFile .ssh/authorized_keys >> /etc/ssh/sshd_config
exit
(Zurück auf der lokalen Konsole):
scp ~/.ssh/id_rsa.pub root@iphone:.ssh/authorized_keys

Bindet man das iPhone mit dem iphone-mount Befehl nun wieder ein, sollte es ohne eine Eingabe eines Passwortes funktionieren! Ebenso beim Unmounten des Gerätes.

6. kleine Änderungen an der iPhone Datenbank

(Quelle:http://marcansoft.com/blog/2009/01/using-amarok-and-other-itunesdb-compatible-software-with-the-iphone-2x/)

Würde man jetzt Musik auf das iPhone aufspielen, würde einem das iPhone anschließend mitteilen, das keine Musik auf dem Gerät vorhanden ist. Grund dafür ist die iTunes Datenbank auf dem Gerät. Sie muss auf eine ältere Version umgestellt werden. Dafür öffnet man auf dem iPhone die XML Datei /System/Library/Lockdown/Checkpoint.xml und sucht nach dem Key DBVersion und setzt den Wert von 4 auf 2. Datei speichern und das iPhone neustarten.

Nun ist das iPhone bereit um mit Musik gefüttert zu werden!

7. Amarok, das iPhone und Musik

Ich nutze zwar Gnome, aber Amarok ist meiner Meinung nach das beste Musikverwaltungsprogramm im Linuxbereich und hat außerdem eine hervorragende iPod Unterstützung. Abgesehen davon, bekam ich das iPhone unter Rhythmbox, Exaile und Banshee nicht zum Laufen. Als GTK Programm arbeitet momentan nur gtkpod zusammen mit dem iPhone.

Warum nicht Amarok2? Nun, die iPod Unterstützung ist noch nicht das Gelbe vom Ei und ich finde die neue Oberfläche mehr als nur gewöhnungsbedürftig, aber das wäre ein anderes Posting Wert…

Da das iPhone nicht automatisch von Amarok erkannt wird, muss man es manuell anlegen.

Dafür öffnet man Einstellungen > Amarok einrichten > Media-Player > Gerät hinzufügen

Mountpunkt, Name und Treiber (iPod) müssen angegeben werden:

Nun sollte das iPhone in der Liste der Media-Player auftauchen. Damit das iPhone nicht jedes mal manuell gemountet werden muss, lässt man dies Amarok für sich erledigen. Neben dem Player ist ein Symbol mit Zahnrädern drauf. Dahinter verbirgt sich ein kleiner Dialog in dem man einen Mount- und einen Unmountbefehl eingeben kann. Dort trägt man bei “Befehl vor dem Verbinden” iphone-mount und bei “Befehl nach dem Trennen” iphone-umount ein.

Es ist soweit: Es kann Musik gesynct werden! :D

Im Media-Player-Reiter im Amarok Hauptbildschirm kann man sich nun mit dem iPhone verbinden, Musik drauf kopieren und sich dann wieder Trennen. Hat man seine Musik mit Covern versehen, so werden auch die mitkopiert!

8. Reboot tut gut

Damit das iPhone die Musik erkennt, bedarf es zum Schluss eines Neustarts des iPhones. Falls jemand ein Workaround dafür hat, bitte her damit! ;)

So, was kommt als nächstes? Achja, die ToDos müssen irgendwie noch gesynct werden… Eins muss man dem iPhone (oder Linux?) lassen: Es wird nie langweilig!

Das wars dann erstmal für heute. Ich denke ich habe die letzten Wochen Blogabstinenz wieder gut gemacht und konnte dem ein oder anderen Linux-iPhone Nutzer weiterhelfen. Ich bin dann mal weg, Musik raussuchen :)

2. Februar 2009


Im meinem letzten Beitrag zu diesem Thema habe ich ein paar Sachen aufgeschrieben, welche mir im Umgang mit Tabellen begegnet sind. Heute will ich diese Reihe fortsetzen und nicht nur auf Tabellen eingehen.

Der Tabellenkopf

Ein wesentlicher Bestandteil einer Tabelle ist der Tabellenkopf und dementsprechend trägt er auch zur Übersichtlichkeit der Tabelle bei. In meinem letzten Post  habe ich den Einsatz von \cmidrule kurz vorgstellt, um den Tabellenkopf vom Tabelleninhalt optisch schön abzugrenzen. Wenn man einen langen Spaltentitel hat lohnt es sich diesen umzubrechen. Dies kann man mit der Angabe einer Tabellenbreite in der Tabellendefinition machen:

\begin{tabular}{cp{2cm}c}
...
\end{tabular}

Die zweite Spalte hat dann eine festdefinierte Breite von 2cm, d.h. wenn der Spaltentitel länger als 2cm ist, wird er umgebrochen.

Nun möchte man aber seinen Titel gleichzeitig vielleicht noch fett, zentriert und in einer kleineren Schrift darstellen. Diese ganzen Formatierungen kann man sicher alle mit in die tabular-Umgebung aufnehmen, aber es bietet sich an einen neuen Spaltentyp zu definieren. Das ganze sieht dann z.B. so aus:

\newcolumntype{C}[1]{>{...}p{#1}}

Man legt damit einen neuen Spaltentyp an (mit Namen C) welchem ein Parameter übergeben wird, nämlich p{} für die Spaltenbreite. In die {…} kann man nun seine ganzen Formatierungswünsche packen. Ergebnis:

\newcolumntype{C}[1]{>{\centering\arraybackslash\scriptsize\bfseries}p{#1}}

Mit Hilfe von \multicolumn kann nun der neue Spaltentyp verwendet werden.

\multicolumn{1}{C{2cm}{BlaBla}

Auf diese Art und Weise kann man schnell und einfach neue Typen definieren - für jeden Anwendungszweck.

Das obige Beispiel im Bild:

spaltentyp

Fußnotennummerierung in scrreprt

Ein weiteres Problem auf das ich gestoßen bin, ist, dass die Nummerierung der Fußnoten in scrreprt in jedem \chapter neu anfängt. Um dies zu unterbinden fügt man zu Beginn des Dokumentes folgende Zeile ein:

\counterwithout{footnote}{chapter}

Das war mal wieder eine kurze Zusammenfassung von zwei Sachen, mit welchen ich mich in letzter Zeit beschäftige. Ich freue mich über Anregungen in den Kommentaren. So lange stecke ich ja noch nicht in der Materie drin.