Pimp my screen

Eines der must have tools im *nix Umfeld ist ohne Zweifel „screen„. Allerdings haben mich einige Dinge immer etwas genervt:

  • Windows: Das schöne Feature verschiedener Fenster innerhalb einer Screen Sitzung hat leider diverse Hacken: In welchem Fenster bin ich gerade überhaupt? Wieviele Windows gibts es eigentlich?
  • Titles: Windows können mit Namen versehen werden. Da man im Administrationsalltag auf X verschiedenen Servern eingeloggt ist, wäre es doch schön anhand der screen titles erkennen zu können, auf welchem Host man im entsprechenden Fenster eingeloggt ist.
  • SSH Agent: Wie kommt man an einen laufenden ssh-agent der im Screen läuft und von allen Screen Windows aus nutzbar ist.
  • Irgendwie lebte ich mit diesen Problemchen und war zu faul mal eine Lösung zu suchen. Aber dann habe ich mich durchgerungen!

    Problem: Windows

    Die Lösung hierzu kam von meinem Kollegen Hombertho:
    Man füge in die .screenrc folgendes ein:

    caption always "%{= kw}%-w%{= BW}%n %t%{-}%+w %-= @%H - %LD %d %LM - %c"

    Schon hat man eine schöne „Taskbar“ mit allen vorhanden Fenstern sowie farblicher Markierung des aktuell aktiven Fensters im unteren Bereich des Screens. 10014

    HowTo dynamic Titles:

    Alle Hosts die diesen Code in der .bashrc oder .bash_profile haben aktualisieren die screen titles beim einloggen auf $user@$host:

    function rename_screen_tab () { echo -ne "x1bk$@x1b\"; return 0; }
    if [[ "$TERM" = screen* ]]; then
    echo
    PROMPT_COMMAND="rename_screen_tab ${USER}@${HOSTNAME%%.*}; $PROMPT_COMMAND"
    fi

    Der Host auf dem screen läuft sollte natürlich ebenfalls den Code in der .bashrc haben. Sonst wird der Screen Title beim Ausloggen nicht wieder zurück geändert.

    SSH Agent für screen:

    Um dieses zu bewerkstelligen hilft ein Screen Window welches immer vorhanden sein muss und den ssh-agent Prozess vorhält.
    .screenrc:

    setenv SSH_AUTH_SOCK $HOME/.screen-ssh-agent
    screen -t agent bash -c "ssh-agent -a $SSH_AUTH_SOCK $SHELL; ssh-add;"

    OpenVPN / Mac OS X / DNS

    Um per Tunnelblick/OpenVPN auch ueber den Nameserver hinter dem aufloesen zu koennen gibt es in OSX ja die schoene Funktion verschiedene Nameserver pro Zone zu definieren. Um diese per scutil am besten noch aus den Werten, die man am OpenVPN Server via DHCP Option definiert hat, einzutragen gibt es ja einige Scripte im Netz. Am besten funktioniert hat fuer mich das Script openvpn-dns-config.sh. Siehe dazu auch folgenden Blog Eintrag.
    Einfach das Script nach ~/Library/openvpn kopieren und
    up "~/Library/openvpn/openvpn-dns-config.sh up"
    down "~/Library/openvpn/openvpn-dns-config.sh down"

    in die openvpn.conf eintragen.

    Selfmade dyndns

    Es soll ja Leute, wie mich, mit DSL ohne Zwangstrennung geben. Hier habe ich das Problem, dass nach einem Router restart oder aehnlichem ja wieder eine neue externe IP vergeben wird. Also braucht man dyndns um auf sein Heimnetzwerk zugreifen zu koennen. Allerdings laeuft so ein Router ja auch mal ueber 30 Tage durch => dydns expired. Abhilfe schafft hier web-nsupdate. Hat man einen Webserver mit PHP, eine eigene Domain und kann diese Domain (weil man entweder selbst den Nameserver verwaltet oder der Provider mit sich reden laesst) diese per nsupdate verwalten, kann man auch selbst dydns spielen. Continue reading

    Don’t use sk98lin

    Ich habe meinem Server mal ein Hardwareupdate in Form einer 3com Gbit NIC verpasst. Der passende Treiber war schnell gefunden. Kernel neu uebersetzt, installiert, tut. Aber was soll das jetzt? XBOX kann nicht mehr vom NFS booten. NFS kaputt. Mount klappt, aber schreiben unmoeglich. Die Loesung: Don’t use sk98lin! Use skge. skge Treiber (ebenfalls im Standardkernel) installiert und siehe da: alles wieder gut.

    Hurray! OX 8.6.2

    Endlich. Die ldap ACL waren es.
    Vor allen anderen ACLs einfuegen:

    access to dn.subtree=“ou=Users,ou=OxObjects,dc=floek,dc=com“
    by self write
    by users write
    by * read
    by anonymous auth

    access to dn.subtree=“ou=Groups,ou=OxObjects,dc=floek,dc=com“
    by self write
    by users write
    by * read
    by anonymous auth

    und schon gehts. Gibt aber noch ein paar kleinere Bugs.