[Logo]

Archive for the ‘Linux’ Category

Bash-Prompt

Donnerstag, November 19th, 2009

Mal ein neuer Post zu praktischen Bash-Prompts, nachdem ich den alten doch wieder um einiges überarbeitet habe.

Ziele:

  • Übersichtlichkeit
  • Möglichst lange Eingabezeilen ohne Umbruch
  • Prompt soll auf verschiedenen Hosts unterscheidbar sein
  • Der Prompt soll möglichst informativ sein.

Lösung:

  • Zweizeiliger Prompt, eine Zeile mit vielen Informationen, eine mit nur einem > und der Eingabe dahinter.
  • Username und Hostname Farbkodiert, geschieht automatisch ueber eine Hashing-Funktion
  • Zeitausgabe ermöglicht es einfach zu sehen wann der Befehl beendet wurde, und damit auch wie lange er gebraucht hat.
  • Smiley in der Ausgabe zeigt ob der Befehl korrekt gelaufen ist (Return Code 0 = kein Fehler)

Um Farben aus hostname/username zu generieren, kann man einfach md5sum als hash-Funktion nutzen, und dann das erste Byte der md5summe ansehen. Das tut die Funktion hashcolor in meiner .bashrc. Dabei habe ich mir noch die Freiheit genommen, die Farben so zu sortieren, dass der Text  “root” eine Rote Farbe bekommt.

die Umgebungsvariable PROMPT_COMMAND darf einen Befehl enthalten, der ist in dem Falle die Funktion Prompt, welche auf der Linux-Konsole nur setps1 aufruft um den Prompt zu ändern, und in X-Terminals aber auch settitle und mittels Escape-Code den Titel des Fensters auf das letzte genutzte Kommando zu setyen.

Der Prompt sieht bei mir jetzt so aus:

12:59:56 :-) username@hostname:~

>

Die .bashrc dazu:

# If running interactively, then:
if [ "$PS1" ]; then
    ## aendert den xterm-Titel in das zuletzt benutzte Kommando usw.
    xtitle() {
        echo -ne "\033]0;[$(history 1 | cut -b 8-30)] $USER@$HOSTNAME:$PWD\007";
    }
    setps1() {
        if [ $? -eq 0 ];then smiley=":-)"; else smiley=":-(";fi
        export PS1="\t $smiley \[`hashcolor $USER`\]\u\[$grey\]@\[`hashcolor $HOSTNAME`\]\H\[$grey\]:\[$yellow\]\w\n\[$normal\]> "
    }
    if [ "${TERM}" != "linux" ]; then
        prompt() {
            setps1
            xtitle
        }
    else
        prompt() {
            setps1
        }
    fi
    PROMPT_COMMAND='prompt'
fi

normal='\e[0m'
black='\e[0;30m'
bblack='\e[1;30m'
red='\e[0;31m'
bred='\e[1;31m'
green='\e[0;32m'
bgreen='\e[1;32m'
yellow='\e[0;33m'
byellow='\e[1;33m'
blue='\e[0;34m'
bblue='\e[1;34m'
purple='\e[0;35m'
bpurple='\e[1;35m'
blue2='\e[0;36m'
bblue2='\e[1;36m'
white='\e[0;37m'
bwhite='\e[1;37m'
grey='\e[0;39m'
bgrey='\e[1;39m'

bgnorm='\e[0;0m'
bgblack='\e[0;40m'
bgred='\e[0;41m'
bggreen='\e[0;42m'
bgyellow='\e[0;43m'
bgblue='\e[0;44m'
bgpurple='\e[0;45m'
bgblue2='\e[0;46m'
bggrey='\e[0;47m'

function hashcolor {
    case $(echo $1|md5sum|cut -b 1) in
        0)echo -en $red;;
        1)echo -en $bblue;;
        2)echo -en $green;;
        3)echo -en $bgrey;;
        4)echo -en $yellow;;
        5)echo -en $byellow;;
        6)echo -en $blue;;
        7)echo -en $bred;;
        8)echo -en $purple;;
        9)echo -en $bpurple;;
        a)echo -en $blue2;;
        b)echo -en $bblue2;;
        c)echo -en $grey;;
        d)echo -en $bgreen;;
        e)echo -en $white;;
        f)echo -en $bwhite;;
    esac
}

Die interessanten Manpages zu dem Thema sind:

  • man console_codes erklärt die Escape Codes z.B. für Farben oder auch um den Titel eines X-Terminals zu ändern.
  • man bash erklärt, dass man Farbcodes in \[...\] einschliessen sollte, damit sie den Zeilenumbruch im Prompt nicht kaputt machen.

Finger weg von Ubuntu One?

Freitag, Oktober 30th, 2009

Dass es gefährlich ist private Daten unverschlüsselt auf fremden Servern zu lagern, sollte einem zwar klar sein, aber für manche Daten reicht diese Sicherheit ja vielleicht. Aber Ubuntu One hat eine ähnliche Klausel wie ICQ in ihren “Terms and Conditions”:

9. Collection and use of your data. We may collect certain non-personally-identifiable information, which is located on your computer. The information collected may include statistics relating to how often data is transferred, and performance metrics in relation to software and configuration. You agree this information may be retained and used by Canonical.

Ähnlich wie im Falle ICQ kann man argumentieren “ja die meinen ja nur Statistiken …”, rechtlich jedoch akzeptiert man dass alle Daten die einen nicht persönlich identifizieren von Canoncial gesammelt und benutzt werden dürfen.
Also Rat für alle die ihre Daten nicht Canoncial schenken möchten: Finger weg von Ubuntu One!

Ach ja, nur damit es erwähnt ist, sie lassen sich natürlich auch zusichern, dass sie die Nutzerdaten an die Polizei weitergeben dürfen, wenn sie gesetzlich dazu verpflichtet sind. Da wird man aber kaum einen Anbieter finden, der keine solche Klausel hat.

.ape / .cue Dateien konvertieren

Dienstag, Februar 24th, 2009

APE ist das Monkey’s Audio Format, ein verlustfreier Audiocodec. Abgesehen davon kennt natürlich kaum ein Player das Format. Man kann die Dateien aber unter Linux mit den Programmen mplayer, bchunk, lame relativ einfach konvertieren:
mplayer -vo null -vc null -ao pcm:fast *ape;bchunk -w audiodump.wav *.cue track;rm audiodump.wav;for i in *.wav;do lame --preset extreme $i;done;rm *.wav
Im Detail:
mplayer -vo null -vc null -ao pcm:fast *.ape
Spielt die .ape Datei quasi ab und speichert das Ergebnis in audiodump.wav.
bchunk -w audiodump.wav *.cue track
trennt audiodump.wav an den Stellen die in der .cue Datei stehen, und nennt die Ergebnisse trackXY.wav. Mit -w schreibt es zusätzlich Wave-Header.
rm audiodump.wav
Entfernt audiodump.wav damit es nicht auch (als Ganzes) nochmal kodiert wird.
for i in *.wav;do lame --preset extreme $i;done
Kodiert die .wav in .mp3 mit sehr guter Qualität.
rm *.wav
Entfernt die übrig gebliebenen .wav Dateien.

Die Commandline geht davon aus, dass sich im Verzeichnis nur eine .ape und eine .cue Datei befinden, und dann funktioniert der Befehl ohne die Namen zu kennen. Befinden sich mehrere im aktuellem Ordner, funktionieren die Anweisungen nicht, weil zum Beispiel der erste audiodump.wav durch den zweiten direkt überschrieben wird.

OpenVZ

Dienstag, August 19th, 2008

OpenVZ ist übrigens ein schönes Spielzeug. Ich nutze es gerade auf meinem Desktop-PC u.a. um die Software-Installation vom Server nachzustellen.

Schade, dass Checkpoints in den Debian-OpenVZ-Kerneln deaktiviert sind.

Tipp: Textfelder in KDE/Qt/Gtk beschleunigen

Mittwoch, April 23rd, 2008

Es sind zwar nur 50-150ms jeweils, aber dafür kostet es auch fast keinen Aufwand:

$ mkdir ~/.compose-cache

Erklärung und mehr dazu: Rob’s KDE Blog: Magic Trick

EEE-PC mit Windows

Montag, März 31st, 2008

Asus EEE-PCDer EEE-PC mit Windows wird genausoviel kosten wie mit Linux. Damit dürfte der Linux-Nutzer wohl den Windows-Nutzer mitfinanzieren. Und die Leute werden wieder einmal nicht bemerken, wieviel Geld sie bei neuen PCs für das enthaltene Windows ausgeben. Dabei wäre der EEE-PC ja die ideale Platform gewesen um zu demonstrieren, dass Linux nicht nur billiger ist, sondern auch für die meisten Leute Windows vollständig ersetzen kann.

Außerdem kann man damit rechnen, dass auf der Hardware Windows langsam laufen wird, was schlechte Testberichte für den EEE-PC bewirken könnte. Auch werden von den 4 GB Flashspeicher wohl nur noch 1,8 GB verfügbar sein auf dem Windows-Modell. Werden dann die nötigen Programme installiert, bleibt für Daten wirklich wenig übrig. Das Xandros-Linux hingegen, welches bisher Standard ist bringt bereits die wichtigsten Programme (wie Multi-Messanger) mit

nilfs2: Ein log-structured file system für Linux

Montag, März 24th, 2008

Achtung: Dies ist ein Artikel für technisch Interessierte, die bereits mit der Linux-Shell umgehen können und wissen was sie tun.
Alle anderen sollten lieber eines der Standard-Dateisysteme wie ext3, xfs oder ReiserFS verwenden, die bereits im Linux-Kernel enthalten sind.

Nilfs2 ist ein log-structured file system. Das heißt, dass Daten bei bearbeitung nicht überschrieben werden, sondern an eine andere Stelle geschrieben werden, sodass das Original erhalten bleibt.

Ähnlich wie bei Journalling Dateisystemen führt dies dazu, dass im Falle eines Ausfalls keine Daten nur halb geschrieben sind. Aber auch nach der Schreiboperation bleibt der alte Zustand erhalten, und kann zum Beispiel genutzt werden um gelöschte Dateien wiederherzustellen.
Dazu nutzt Nilfs2 Checkpoints und Snapshots. Bearbeitet man Dateien, erstellt Nilfs2 ca. alle 30 Sekunden einen Checkpoint, welcher in der Standardeinstellung nach einer Stunde gelöscht wird. Möchte man einen Checkpoint dauerhaft behalten, kann man ihn in einen Snapshot umwandeln, welcher nicht automatisch gelöscht wird.

(weiterlesen…)

Blogdevice

Mittwoch, Februar 27th, 2008

Linux für Blogger:

$ ls -lh /dev/blog
brw-rw-rw- 1 root root 1, 3 27. Feb 2008  /dev/blog

Wobei ein Blogdevice auch ein Stilmittel im Internet (stylistic device)  sein könnte.
Oder ein Gerät für Blogs. Lasst euch nichts erzählen von PHP und Wordpress, Blogdevices sind die Zukunft ;) .

TrueCrypt 5.0

Mittwoch, Februar 6th, 2008

Truecrypt 5.0 ist freigegeben worden.

Statt wie bisher nur Container oder Daten-Partitionen kann jetzt die Windows-Systemplatte komplett verschlüsselt werden, wobei dann beim Start ein Passwort erforderlich ist. Das beugt z.B. einem Austauschen von TrueCrypt auf der Bootplatte mit dem Ziel Passwörter mitzuschneiden vor. Da hilft auch ein heimlicher Offline-Trojanereinsatz nicht gegen.

TrueCrypt unterstützt sogenannte Hidden Volumes, welche in einem normalem Volume sein können, oder nicht. Dadurch dass sich nicht nachweisen lässt ob eines enthalten ist, könnte sich ein Nutzer der zur Passwortübergabe gezwungen wird herausreden er hätte kein Hidden Volume genutzt. Das Konzept an sich ist eine gute Idee, ich halte es jedoch aus den Folgenden Gründen für nicht ganz unkritisch:

  • In einem Rechtsstaat ist es ein gutes Recht eine verschlüsselte Partition zu haben, ohne irgendein Passwort rauszurücken.
  • Rechnet tatsächlich jemand mit Beugehaft, Folter oder ähnlichem, sollte er bei einer Software in der etwas wie “hidden Volumes” möglich ist besser auch ein hidden Volume haben, da der Folterknecht sicher solange foltert bis er zwei Passwörter bekommt.
  • Die meisten die ein Hidden Volume haben werden bei einer Folter sowieso schnell beide Passwörter rausrücken, wer keins hat wird eventuell deswegen länger als “nötig” gefoltert.
  • Die wenigsten werden im äußerem Container realistische Daten haben, sondern z.B.:
    • 50 MB Dateien in 100 GB Container.
    • Timestamp der Dateien mehrere Monate alt, obwohl das Volume gestern noch genutzt wurde.
    • Daten sehen nicht schützenswert aus (da der Nutzer diese ja pflegt um sie freimütig herauszurücken)

Der letzte Punkt zeigt natürlich, dass man gerade auch unwichtige Dateien verschlüsseln sollte, damit nicht jeder der Verschlüsslung braucht damit auffällt. Davon abgesehen gehören auch unwichtige Dinge zur Privatssphäre: Auch wenn man mir aus meinen E-Mails keinen Strick drehen kann, möchte ich dennoch wissen, dass nur ich sie lesen kann.

Eine Möglichkeit Hidden-Volumes so zu gestalten, dass keiner weiß ob er schon alle Passwörter kennt wäre Verschachtelung zu ermöglichen. Dann weiß ein Angreifer nicht, ob das 2. Hidden-Volume schon das innerste ist, oder ob noch weitere genutzt wurden.

In dem Sinne: TrueCrypt (5.0) ist eine tolle Sache, gerade weil es eine Software ist die wirklich jeder bedienen kann.

Grafische Oberfläche für fatsort

Sonntag, Februar 3rd, 2008

Viele Besitzer von einfachen MP3-Sticks haben ein Problem: die Sticks spielen die Stücke nicht alphabethisch (z.B. 01-irgendwas, 02-irgendwas, …) ab, sondern in der Reihenfolge wie man sie auf den Stick kopiert hat. Und die entspricht beim normalem Kopieren leider nicht immer der Reihenfolge der Namen.

Die Lösung für das Problem heißt fatsort. Anstatt dass man darauf achten muss die Stücke einzeln in der richtigen Reihenfolge auf dem Stick zu speichern, sortiert Fatsort hinterher die Dateizuordnungstabelle eines FAT16 oder FAT32 Dateisystems.

Fatsort-GUIDamit auch Leute die die Kommandozeile noch nicht so gut beherrschen fatsort bedienen können, habe ich eine grafische Oberfläche geschrieben, die mittels HAL angeschlossene USB-Sticks erkennt, und anbietet sie zu sortieren. Die Oberfläche ist mit zenity realisiert und passt sich damit gut in den GNOME-Desktop ein.

Das Python-Script steht ab sofort hier zum Download:
fatsort-gui.py (Markup)

Achtung: Es werden nur Sticks angezeigt, die nicht gemounted sind.