Ich wollte nur [...] und dann ist das Universum explodiert.

Projects
Books
Archive
About









    Permalink
  1. Twitter on CLI | Twidge Interactive Shell

    Seit längerem benutze ich John Goerzen‘s CLI Twitter Client Twidge. Weniger zum Posten als zum Lesen, aber dennoch kann ich dieses Stück Software nicht mehr weg denken. Ich finde Twidge erntet allgemein zu wenig Beachtung. Wie dem auch sei, sieht eine durchschnittliche Nutzung von Twidge wie folgt aus:

    $ twidge setup
    $ twidge lsrecent
    <timpritlove> Verkannt, ignoriert, nahezu vergessen - aber sinnvoll, nützlich und wertvoll: das Semikolon!
    [...]
    $ twidge update "Ich benutze gerade Twidge"

    Bei intensiver Nutzung nervt die Syntax allerdings etwas. Deshalb hab ich mich hingesetzt und eine Twidge-Shell gebaut.

    Die angepasste Shell “twidge-sh” kann einfach über Aufruf ./twidge-sh gestartet werden.

    $ wget http://github.com/noqqe/twidge/raw/master/twidge-sh
    $ chmod +x twidge-sh
    $ ./twidge-sh
    noqqe@twitter> lsrecent
    <rivva> Skype jetzt für Android verfügbar – Skype Blog auf
    Deutsch http://rivva.de/QajD
    [...]
    noqqe@twitter> update "Ich benutze gerade Twidge-Shell"
    noqqe@twitter> lsdm
    noqqe@twitter> follow technicallife

    Die Twidge-Shell hat weiterhin folgende Features:

    • Der Prompt wird aus der .twidgerc generiert (username@service>)
    • Alle Standart Kommandos von Twidge werden automatisch komplettiert und sind benutzbar (z.B. user@service> lsrecent)
    • Alle in der .twidgerc definierten Aliase werden übernommen und sind ebenfalls verwendbar. (z.B. user@service> rls)
    • Die Twidge-Shell funktioniert weiterhin als ganz normale Shell mit allen Zusätzen und Funktionen.

    Ich habe mich dabei an Ryan Tomayko’s git-sh orientiert, der ähnliches für Git gebaut hat. Was übrigens auch wirklich gut funktioniert.

    Mein Twidge-Fork auf Github (mit Twidge-sh)
    Twidge von John Goerzen
    Twidge zum Download für Debian
    Twidge zum Download für Ubuntu
    Twidge-Shell Script zum Download


  2. Permalink
  3. Web | Paste-Service via CommandLine (Sprunge.us)

    Sprunge.us ist ein Paste-Service den ich heute von Chris gezeigt bekommen habe. Sprunge ist aber außerdem noch _awesome_, weil er ohne Registrierung oder Umstände alles annimmt was man ihm via curl -F übergibt. Von den Entwicklern ist das wie folgt vorgesehen:

    <command> | curl -F 'sprunge=<-' http://sprunge.us
    INFO: Code: gJIJ
    INFO: URL: http://sprunge.us/gJIJ

    Und man kann unter der ausgespuckten URL den SourceCode begutachten. Den curl-Aufruf finde ich persöhnlich ziemlich lang und nicht wirklich eingängig. Das fanden anscheinend auch die Entwickler von “sprang“. Usage ungefähr so:

    cat /usr/local/scripts/script.sh | sprang
    INFO: Code: gJIJ
    INFO: URL: http://sprunge.us/gJIJ

    sprang ist ein Python-Script das mit dem sprunge.us Pastebin-Dienst interagieren kann. Man kann ihm zum Bleistift auch mit sprang -f ein Fileübergeben, mit -L Logfiles definieren oder ähnliches bewerkstelligen (genaueres mit sprang –help). Durch die Installation des python-setuptools bzw dem Kommando

    aptitude install python-setuptools; easy_install sprang

    wird der Helfer für den Dienst nutzbar. Ich muss ehrlich gestehen ich bin kein Fan von Fremdpaketsystemen. Aber diesbezüglich muss es eben sein. Alternative ist natürlich ein Bash-alias

    alias sprang="curl -F 'sprunge=<-' http://sprunge.us"

    Wobei somit die Restfunktionalität des sprang-scripts verloren geht. Besonders schön ist auch das Syntax Highlightning. Je nach Eingespeisten Source kann man der URL beispielsweise ein ?bash oder ?py mitgeben

    http://sprunge.us/gJIJ?bash

    http://sprunge.us/gJIJ?py

    und erhält schön bunt und leserlich ge-Highlightete Versionen des gesendeten.


  4. Permalink
  5. Mail | Postfix-Aliases mit MySQL-Backend erstellen

    Ich registrierte mich vor kurzem wiedermal bei einem etwas zwielichtigem Portal. Keine begründete Behauptung, es schien mir aber trotz allem so vorzukommen. Wie üblich loggte ich mich in meinen PHPMyAdmin ein und erstellte (um SpamEmails vorzubeugen) mithilfe meines MySQL-Backends von Postfix einen Alias. In einer Tabelle gesammelt liegen sämtliche aliase und deren Empfänger-Postfach.

    address | goto
    ubuntu@zwetschge.org | mail@zwetschge.org
    spam2@zwetschge.org | mail@zwetschge.org
    spam3@zwetschge.org | mail@zwetschge.org
    spam4@zwetschge.org | mail@zwetschge.org

    Es mag jetzt mit Sicherheit User geben die MySQL mit Postfix für unnötig halten, da die Steuerung über ConfigFiles ausreicht. Auf kurz oder lang gefällt mir die MySQL einfach besser. Einfach zuhandhaben. Flexibel. Schön. Das ständige eingelogge in HTpasswd, phpmyadmin-login und herumgeklicke war mir grad nur etwas zu blöd. Ich wollte ein kleines Skript basteln das mir das adden von Aliasen per CLI ermöglicht. In etwa so:

    aliasadd <alias> <recepient>

    Via echo lässt sich mysql (nach Authentifizierung) einen Befehl übergeben:

    echo "use maildb; insert into aliases values ('$1', '$2');" | mysql -u <user> --password=<pass>

    Damit wäre auch schon das gröbste geschafft. Zumindest das Einfügen. Ein Skript zeichnet allerdings mehr aus als nur die Aufgabe die es erledigen soll. Ein Skript muss zuverlässlich sicherstellen das die Aufgabe ausgeführt wurde und dies dem Benutzer nach Möglichkeit auch noch mitteilen.

    echo "use maildb; select * from aliases where address = '$1';" | mysql -u <user> --password=<pass>

    Die vorherige Zeile sieht eigentlich nur nach ob der eingegeben Alias wirklich in der Datenbank vorkommt. Freilich(wer findet ‘freilich’ eigentlich noch seltsam in Sätzen?) könnte ich jetzt noch nach Rückgabewerten mit $? Abfragen und ähnliche if-Vorraussetzungen einbauen. Aber für die 4-5 mal im Monat in denen ich es benutze wäre das übertrieben.

    Fertig sieht das ganze dann wie folgt aus:

    #!/bin/bash
    echo "use maildb; insert into aliases values ('$1', '$2');" | mysql -u <user> --password=<pass>
    echo "use maildb; select * from aliases where address = '$1';" | mysql -u <user> --password=<pass>

    Bildschirmfoto 2010-01-09 um 12.12.35

    nochmal als Plaintext:
    http://zwetschge.org/paste/6