XMOTO – Meine liebsten Levels…

X-Moto ist ein 2D-Motocross-Geschicklichkeits-Spiel, in welchem Physik eine große Rolle spielt. Und ich bin ein ziemlicher Fan davon, denn es startet schnell und kein Level dauert länger als ein paar Minuten. Hier ein Video.

Es gibt sehr viele Levels – knapp 1.500, viele Tricks sind zu üben, um diese zu bestehen. Leider sind einige Levels nahezu unspielbar. Andere sind extrem langweilig und bieten keinen Spaß. Nachdem ich Freak alle Levels mal gespielt habe, habe ich mir mal die Mühe gemacht, alle gut spielbaren und interessanten Levels mal zu notieren.

Eine Liste mit knapp 179 guten Levels kamen so zusammen, wer die Liste sehen will, sollte auf “Vollständig lesen” klicken. Mein alsolutes Lieblingslevel ist übrigens ‘aero_crazy_elevator_2′ – kann ich nur empfehlen! Weiterlesen →

Passwort erzeugen

Oft braucht man eine Idee für ein neues Passwort, doch die Idee fehlt. Wie man solche einfach erfindet, habe ich im Artikel Sichere Passwörter schon erklärt. Doch kommt es manchmal auch vor, dass man viele Passwörter automatisch erzeugen muss. Hier helfen entweder viele kleine Tools oder eben die Shell.

Zuerst hole ich mir mit dd zufällige Daten, sagen wir mal 10 kByte. Diese schicke ich durch eine RegEx und entferne alle Zeichen, die nicht den gewünschten Zeichen entsprechen. Ich nehme hier im Beispiel nur Buchstaben und Zahlen. Nun muss ich nur noch dafür sorgen, dass nur so viele Zeichen wie benötigt ankommen, was ebenfalls wieder durch eine RegEx passiert.

Das Ergebnis sieht dann so aus:

dd if=/dev/urandom bs=1024 count=10 2>/dev/null
  | perl -pe "s/[^a-zA-Z0-9]//g"
  | perl -pe "s/^(.{12}).*$/1/g"

Nun gibt es aber einen Sonderfall, bei dem ich weitere Ausnahmen mache: Das Root-Kennwort.

Ein externer Login (via SSH) mit Passwort ist bei meinen Systemen nicht möglich (nur via Public Key). Das Passwort wird bei mir also nur benötigt, wenn ein Techniker es im Rechenzentrum lokal eingeben muss. Daher sollten alle Zeichen einfach tippbar sein, âáà sind das bei nodeadkeys meist nicht. Außerdem sollte man an die Verwechslungsgefahr denken: Der Techie mit dem Ausdruck des Passwortes in seiner Hand kann bei typischer RZ-Beleuchtung sicher keinen Unterschied zwischen | und l erkennen.

Folgende Zeichen der oben generierten Passworter erachte ich als Störend:

  • Kleines Ludwig (l), großes Ida (I), die Zahl Eins (1), das Pipe-Symbol: lI1|
  • Großes Otto (O), die Zahl Null (0): O0
  • Das Ypselon und das Zet (weil auf US-Keyboards vertauscht)

So würde das nun aussehen, wenn wir diese Zeichen nun entfernen:

dd if=/dev/urandom bs=1024 count=10 2>/dev/null
  | perl -pe "s/[^a-zA-Z0-9]//g"
  | perl -pe "s/[lI1O0yYzZ]//g"
  | perl -pe "s/^(.{12}).*$/1/g"

Die beiden RegEx könnte man zusammenfassen, indem man schon beim ersten nur gewünschte Zeichenbereiche freigibt. Aber ich finde es so leichter lesbar und besser zu bearbeiten.

Fullbackup mit tar

Meinen Server sichere ich gerne vollständig, da ich so im Falle eines Ausfalls schnell wieder an die Daten komme. Sofern man keine Technologien wie Snapshot & Co nutzen kann, genügt hierzu auch ein einfaches tar.

Erstmal sollte man einige Verzeichnisse ausnehmen, z.B. /proc, /dev oder /sys. Auch können Temp-Verzeichnisse sowie /var/run und /var/lock ausgenommen werden. Je nachdem, wie wichtig die Logfiles sind, können die auch weg, brauchen sie doch nur viel Platz.

Die Spool-Files vom Mailserver sind oft auch unsinnig: Ein 6h altes Backup enthält viele Mails, die längst zugestellt sind, andererseits keine Mails der letzten 6 Stunden. Sowas lohnt im Backup nicht. Wer viel Wert auf das Mailbackup legt, könnte höchstens das aktuelle Spool-Verzeichnis sehr häufig per rsync anderswo sichern.

Datenbanken sollten nicht live weggezogen werden, besser ist eine vorher erstellte konsistente Kopie (z.B. ein MySQL Dump), die im Backup landet, während das Arbeitsverzeichnis der Datenbank ausgenommen wird. In meinem Fall ist das /var/lib/mysql.

Eine Sache ist für die Herstellung noch ganz wichtig: Es sollte nicht das Verzeichnis selbst vom Backup ausgenommen werden, sondern nur dessen Inhalt. Das Verzeichnis (samt zugehöriger Owner- und Rechteeingestellungen) sollte im Backup bleiben. In tar geht das so, dass man das Verzeichnis nicht mit ‘–exclude=pfad’ sondern mit ‘–exclude=pfad/*’ ausnimmt.

Zuletzt sollte man das Backup selbst auch noch ausnehmen – nicht wäre dümmer als eine rekursive Sicherung des Backups selbst. Das Ergebnis als Kommando sieht dann so aus:

tar czf /pfad/zum/backup.tgz
    --exclude=proc/*
    --exclude=dev/*
    --exclude=sys/*
    --exclude=tmp/*
    --exclude=var/tmp/*
    --exclude=var/run/*
    --exclude=var/lock/*
    --exclude=var/log/*
    --exclude=var/lib/mysql/*
    --exclude=var/spool/postfix/*
    --exclude=pfad/zum/backup.tgz
    /

Die am Ende der Zeilen zeigen der Bash an, dass die Zeile noch nicht abgeschlossen ist. So lassen sich mehrzeilige Kommandos eingeben, was der Übersichtlichkeit dient. Das / am Ende ist wichtig, es sagt tar, dass wir / sichern wollen, also die ganze Platte.

urldecode auf der Shell

Wer hin und wieder schon mal in einem Apache-Log die Referer durchsucht hat, kennt das Problem mit der Zeichenkodierung: Sonderzeichen werden als zweistellige hexadezimale Zeichen mit vorangestelltem Prozentzeichen dargestellt. Aus ‘Wörter mit Äh, Üh und Öh’ wird so schnell ein ‘W%F6rter+mit+%C4h%2C+%DCh+und+%D6h’, was für den Admin wirklich schwer zu lesen sein dürfte.

Eine ganz einfache Möglichkeit der Umwandlung bietet Perl durch die Möglichkeit, die Suchergebnisse eines regulären Ausdrucks durch eine Callback-Funktion zu schicken:

echo 'W%F6rter+mit+%C4h%2C+%DCh+und+%D6h'
  | perl -pe 's/%([A-Fa-f0-9]{2})/pack("C", hex($1))/seg'

Nur die Pluszeichen (welche für Space eingesetzt werden) bleiben bestehen, das erschwert die Lesbarkeit jedoch kaum. Falls es doch stört, einfach das Ergebnis nochmal durch ‘tr‘ schicken…

Albtraum eines Linux-Sysadmins…

Manche träumen davon, von einem Hochhaus zu fallen oder einen Flugzeugabsturz mitzuerleben. Sysadmins träumen aber anders – hier ein Albtraum, den ein Kollege hatte:

user@host:~# apt-cache show sysvinit
Package: sysvinit
Essential: yes
Priority: required
Section: admin
Installed-Size: 220
Maintainer: Debian sysvinit maintainers
Architecture: i386
Version: 2.86.ds1-38+etchnhalf.1
Depends: libc6 (>= 2.3.6-6), php5-common (= 5.2.0-8+etch11)
Pre-Depends: initscripts, sysv-rc (>= 2.86.ds1-1.2), sysvinit-utils
Filename: pool/main/s/sysvinit/sysvinit_2.86.ds1-38+etchnhalf.1_i386.deb
Size: 108090
Description: System-V-like init utilities
 This package contains programs required for booting
 a Debian system and doing basic process management.
 .
 The most important program in the package is /sbin/init.
 It is the first process started on boot and continues
 to run as process number 1 until the system halts. All
 other processes are descended from it.

Bash History mit Zeitstempel

Seit Version 3 hat die Linux-Shell ‘Bash’ ein nettes Feature: Sie kann in der History nicht nur die eingegebenen Befehle speichern, sondern auch Datum und Uhrzeit dazu.

Für mich als Systems Engineer in einem RZ eine nette Sache. Bei einem Problem kann ich zwar per ‘history’ sehen, welches Kommando dazu führte und per ‘last’ finde ich schnell heraus, wer meiner Kollegen wann auf dem Server war, doch helfen beide Informationen meist nichts, wenn ich nicht feststellen kann, WANN das Kommando eingegeben wurde.

Das funktioniert ganz einfach: Die Umgebungsvariable HISTTIMEFORMAT muss gesetzt sein und zwar mit dem Datumsformat gemäß strftime(3). Die Manpage verrät, dass %F das Datum und %T die Uhrzeit ist. Man muss die Variable nun nur noch im File ~/.bashrc setzen, schon wird bei jedem Befehl die Zeit gespeichert:

export HISTTIMEFORMAT='%F %T '

Wichtig ist das Leerzeichen zwischen dem %T und dem schließenden Quote. Ohne dieses gibt der Befehl ‘history’ die Kommandos ohne Trennzeichen direkt hinter dem Datum aus.

Bedenken sollte man, dass dies weder das Manipulieren noch das Löschen der History verhindert. Man kann also damit keinen “Schutz” bieten, sondern es nur unter Kollegen etwas einfacher machen, den richtigen Ansprechpartner schnell zu finden.

Medienhysterie – Die Welt geht unter!

Hadronen Teilchenbeschleuniger (LHC) in Genf

Hadronen Teilchenbeschleuniger (LHC) in Genf

Diese Woche ging der Large Hadron Collider in Betrieb. Erste Teilchen wurden bereits durch den Ring geschossen. Doch obwohl die Einmessarbeiten noch einige Monate andauern und in dieser Zeit keinerlei Kollisionen stattfinden werden, überschlug sich die Presse schon Tage vor dem Startschuss mit Meldungen über den möglichen Weltuntergang durch schwarze Löcher. Besonders witzig in diesem Zusammenhang fand ich ein Flash-Video von cyriak.co.uk, welches angeblich eine Webcam vom LHC zeigt – sehr lustig gemacht…

Für alle diejenigen, die von Physik nicht nur keine Ahnung haben, sondern auch die Begriffe nicht richtig zuordnen konnten und somit auch bei Pseudo-Physiker-Diskussionen nicht mithalten konnten, gab es ja auch noch ein weiteres Thema der Woche: Den Jahrestag des Einsturzes des Word Trade Centers. Das TV hat diesen Tag natürlich zu 100% genutzt, um weitere Verschwörungstheorien zu streuen, was wohl in den meisten Firmen am Freitag (12.09.) Tagesthema Nummer Eins war.

Ich denke, das LHC wird unsere Welt nicht verschlucken. Und das World Trade Center wurde wohl auch nicht von der Bush-Regierung in die Luft gejagt. Ich stehe solchen Verschwörungstheorien skeptisch gegenüber, die nur darauf bauen, dass nichtvorhandene Beweise automatisch beweisen sollen, dass etwas verborgen wurde. Außerdem traue ich dem Bush sowas geistig gar nicht zu.  :grin:

Nun, wir werden sehen. Irgendwann nach meinem Tod werden wohl die WTC-Akten alle geöffnet und das LHC dürfte bis dahin auch schon Ergebnisse geliefert haben. Und Archive.org wird dafür sorgen, dass meine Meinung zu diesem Zeitpunkt noch existiert. Dann könnt ihr prüfen, ob ich recht hatte :razz:

Der Butschek hat jetzt ein Blog!

So, es ist soweit:

Ich starte mit diesem Eintrag mein eigenes Blog!

Viele meiner Bekannten wird es wundern, wie ich nun dazu komme – war ich doch früher mal ein Gegner der Selbstbeweihräucherung im Internet. Aber meine Ansicht zu Blogs hat sich geändert, wohl auch durch viele gute Beispiele, die nicht nur unnütze Inhalte Ihres Lebens ins Netz stellen, sondern echtes Know How liefern.

Ein weiterer Punkt für eine Blog-Software was die Strukturierung meiner Homepage, mit der ich ja nun seit Jahren permanent unzufrieden bin. So oft wollte ich schon einen Artikel ins Netz stellen, was jedoch meist daran scheiterte, dass neben dem Tippen des Textes auch noch das Veröffentlichen eine Rolle spielt.

Eine Blog-Software bietet dann wirklich den schnellsten Weg: Text eingeben, Tags eingeben, fertig. Alles weitere – die Einsortierung Datum und Name der Überschrift, eine Tag-Übersicht, Veröffentlichung durch RSS, …, alles nicht mehr mein Job.

In meinem Blog kommt übrigens die Software Serendipity zum Einsatz. Das Wort Serendipity bezeichnet eine zufällige Beobachtung von etwas ursprünglich nicht Gesuchtem, das sich als neue und überraschende Entdeckung erweist, vereinfacht also einen glücklichen Zufall.

In etwa das war die Software auch für mich. Ich konnte mich irgendwie nie für ein Blog-System entscheiden, waren die einen zu komplex, die anderen wiederum konnten zu wenig. Die alten Bekannten waren mir durch die ständige Anwesenheit in den Security Reports unlieb geworden. Eigentlich brachte der Markt nicht viel her – bis ich Serendipity kennen lernte.

Das System nutzt neben einer einfachen und sehr klaren Datei- und Verzeichnisstruktur eine ebenso saubere Struktur in der Datenbank. Das Grundsystem ist einfach gehalten und daher sehr schlank, Plugins bieten jedoch fast unendliche Möglichkeiten. Auch die Schnittstellen sind so, wie sich ein Hobby-Programmierer dies vorstellt. (Bei Interesse: Eine Liste weiterer Features ist direkt auf der Startseite des Projekts zu finden)

PS: Scheinbar haben die Entwickler längst eingesehen, dass das Wort Serendipity nicht für die Allgemeinheit taugt. Darum wird oft die Kurzform S9Y (S + 9 weitere Buchstaben + Y) gewählt. So heißt auch die Domain des Projekts nicht Serendipity, sondern einfach nur s9y.org.

So, seid gespannt, was mein Blog noch bringen wird -  ich bin’s auch :cool:

Lorem Ipsum

At vero eos et accusam et justo duo dolores et ea rebum.

Lorem Ipsum: At vero eos et accusam et justo duo dolores et ea rebum.

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.

Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.

Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.