Der grüne Daumen - Chilis angepflanzt

Ab und an sollte man sich ja auch mit anderen Dingen beschäftigen, wie z.B. Pflanzen. Gut, ganz ohne Geek-Faktor geht's natürlich nicht und deswegen sind's auch Chilis geworden. Da ich den Eindruck hatte, dass die Samen unheimlich schnell treiben, hab ich mal 2 Fotos gemacht.

Einmal heute morgen...

... und einmal heute abend ...

Heftig, oder? Es liegen gerade mal 10 Stunden zwischen den beiden Aufnahmen. Scheinbar ist der Platz auf der Aquarium-Abdeckung ideal zum anzüchten ;-)

Chemnitzer Linux Tage 2009

Samstag

  • Sören Sprenger - GPL Telefonanlage Gemeinschaft
    Nette Übersicht über die Features, die das Projekt bietet und ein paar Screenshots, was man alles mit der Web-Oberfläche machen kann. Ich hätte mir etwas mehr Technik bzw. Abgrenzungen zu anderen Lösungen, die auch Asterisk einsetzten, gewünscht.
  • Gerhard Galsterer - Ethernet und Mobilfunk, zwei Welten begegnen sich
    Kompakter Überblick über Probleme und Möglichkeiten, die beim Verbinden zweier Ethernet-Segmente via Mobilfunk existieren. Für mich zu wenig Linux-Verbindung, mich hätte schon interessiert, was an Software auf den Boxen läuft - und natürlich, was für Hardware da überhaupt drin steckt.
  • Ralf Spenneberg - Praktische SELinux Anwendung: Kiosk-Modus für Gäste
    Super Start, um mal ein bisschen in SELinux reinzuschnuppern! Guter Vortrag, guter Inhalt, viel rübergebracht! TOP! Und es war wohl auch der Startschuss, dass ich mich wirklich mal etwas da einlese/einarbeite. Sinngemäßes Zitat: "Sie denken, Sie können SELinux nicht einsetzten, weil Sie es nicht verstehen? Aber den Linux-Kernel verstehen Sie, ja? ;-) SELinux verbietet nur Dinge, die bisher erlaubt waren - nicht andersrum -, es wird also nur 'besser'."
  • Prof Dr. Peter Trommler - OFS: Ein allgemeines Offline-Dateisystem auf Basis von FUSE
    Im Linux-Magazin war vor kurzem schon ein Artikel dazu und gerade die Tatsache, dass man eben nichts am Server installieren muss, macht dieses Offline-FS so interessant. Bisher ist wohl eher ein Prototyp entwickelt worden, aber trotzdem werde ich das demnächst mal austesten ;-)
  • Martin Schütte - Syslog nach RFC
    Klingt irgendwie interessant, wie das ganze funktionieren soll, nur ob man das wirklich will, sei mal dahingestellt. Wenn mir jemand in den Syslog-Server "spucken" kann, ist er eh schon in meinem Netz (evtl. sogar auf dem Rechner) und wieso sollte er dann nicht mit den Möglichkeiten, die man so auf einer UNIX-Büchse hat, Log-Meldungen verschicken?!?
  • David Roetzel: Systemkonfiguration managen mit Puppet
    Ui, heftiges Thema. Die Config-Files sehen halbwegs brauchbar aus, auch wenn es definitv schöner gehen würde. Ist wohl der Tatsache geschuldet, dass es in Ruby programmiert ist ;-). Naja, ich denke man muss das System mal antesten, sich selbst am Riemen reißen, dass man es so macht, wie es Puppet will und dann darf man urteilen. Was mich allerdings nachdenklich stimmt ist die CPU-Zeit, die der Master wohl so zum "Client-Config-Compiliere" braucht - wenn ich das richtig verstanden habe.
  • Karl Uwe Lockhoff: Einsatz von NetBSD auf minimaler Hardware
    Ziemlich theoretischer Vortrag, wie man NetBSD kleiner machen kann um es eben auf kleiner/alter Hardware als Mini-Server laufen lassen kann. Ich hätte das ganze etwas praktischer, bzw. mit "echten" Configs, besser gefunden.

Sonntag

  • Peter Eisentraut - Spaß mit PostgreSQL
    Hmm, was soll ich sagen? Inhalt gut, am Vortragsstil fand ich noch Optimierungspotential. Die Sachen, die man mit PostgreSQL machen kann, sollte man auf jeden Fall mal austesten, schließlich ist es fast egal, was z.B. die eingebundenen "Funktionen" machen
  • David Kastrup - Lua, eine kompakte Erweiterungssprache
    Eigentlich bin ich von David ja echt gute Vorträge gewohnt. Leider hat er sich wohl letzte Nacht etwas... "überhoben" und ist zu spät in's Bett bzw. den Schlafsack gekommen. Letztendlich gleiches Fazit wie beim PostgreSQL-Vortrag: Inhalt top, Vortrag flop :-(
  • Hans-Jürgen Schönig - PostgreSQL: Aktuelle Entwicklungen
    Schade, leider zu spät gekommen und so eine echt gute Show (und auch guten Inhalt!) teilweise verpasst! Schön zu sehen, dass man auch solche Vorträge nicht nur bierernst rüberbringen kann, sondern dass auch hier der Spaß ganz weit vorne stehen kann. Der unüberhörbare österreicher Akzent tat dann sein übriges ;-)

CeBIT 2009 - mit mir

Dieses Jahr hat's mich auch mal erwischt. Ich bin auf der CeBIT 2009.

Wer Lust hat, kann mich ja in Halle 6, Stand G41 (rechter Teil von Heinlein) mal besuchen. Teamix stellt u.a. Nagios aus und ich halte auch täglich einen Vortrag darüber.

Wer uns nicht findet, einfach nach den roten oder türkis Shirts ausschau halten ;-)

NFSv4 verringert Latenzen gegenüber NFSv3 (insbesondere über WLAN)

Kurz zu meiner Motivation:

Weil ich es lieben und schätzen gelernt habe, auf vielen/allen Rechner das gleiche Home-Verzeichnis zu haben, liegt bei mir zu Hause /home auf meinem Server. Dies wird dann von den diversen anderen Rechner per NFS (bisher V3) gemountet.

Meine Workstation ist aufgrund der Lage in der Wohnung per WLAN mit dem Server verbunden, was an sich kein Problem ist (die Geschwindigkeit reicht vollkommen aus, vielleicht mal beim DVD brennen nervt's - wenn das Image auf dem Server liegt).

Allerdings gibt es ein paar Programme, die IMHO viel zu häufig auf das Dateisystem zugreifen, dazu gehört eben Firefox/Iceweasel. Das Ergebnis war, dass man bis zu 3 Sekunden warten musste, bis sich ein neues Tag geöffnet hat - grausam! Versuche mit lokalem Home-Verzeichnis und Firefox/Iceweasel bzw. NFS-Home und Opera haben gezeigt, dass es eindeutig an dieser Kombination lag.

Da ich mich vor längerer Zeit auch schon mal beruflich mit NFSv4/NFS4 auseinander gesetzt habe und daher wusste, dass genau diese vielen Round-Trips zwischen Server und Client reduziert wurden, dachte ich mir, probier's doch "mal einfach schnell aus". Pustekuchen! Leider gibt's zu viele Anleitungen, die auf alten Ständen aufsetzen und nicht funktionieren. Deswegen hier eine Lösung für Debian/Lenny (NFS-Tools 1.1.2).

  1. Vorbereitung IDMAP - Server & Client
    NFSv4/NFS4 arbeitet auf der Leitung nicht mehr mit User-IDs, sondern mit "User-Strings", welche wie E-Mail-Adressen aussehen. Dazu gibt's den (rpc.)idmapd, welcher die Umsetzung auf beiden Seiten vornimmt.

    % cat >/etc/idmapd.conf <<EOF
    [General]
    
    Verbosity = 0
    Pipefs-Directory = /var/lib/nfs/rpc_pipefs
    Domain = homenfs.domainname.local
    
    [Mapping]
    Nobody-User = nobody
    Nobody-Group = nogroup
    
  2. Server einrichten
    Benötigte Pakete installieren:

    root@server% aptitude install nfs-kernel-server
    

    Anlegen der neuen Export-Struktur:

    root@server% mkdir -p /exports/{home,data}
    

    Dauerhafter Bind-Mount der zu exportierenden Verzeichnisse:

    root@server% cat >>/etc/fstab <<EOF
    /home  /exports/home  none  bind  0 0
    /data  /exports/data  none  bind  0 0
    EOF
    

    Exportieren der neuen Struktur:

    root@server% cat >>/etc/exports <<EOF
    /exports       192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash,fsid=0,crossmnt)
    /exports/home  192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
    /exports/data  192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
    EOF
    

    Starten der NFS- und IDMAP-Dienste:

    root@server% /etc/init.d/nfs-common restart
    root@server% /etc/init.d/nfs-kernel-server restart
    
  3. Client einrichten
    Benötigte Pakete installieren:

    root@server% aptitude install nfs-common
    

    Dauerhaftes Mounten der Verzeichnisse:

    root@client% cat >>/etc/fstab <<EOF
    server:/home  /home/  nfs4  defaults  0 0
    server:/data  /data/  nfs4  defaults  0 0
    EOF
    root@client% mount -a
    
  4. Glücklich sein
    Man merkt zwar immernoch einen kleinen Unterschied zwischen lokalem und NFS-Home-Verzeichnis, aber das nur gelegentlich. Auf jeden Fall kann man nun auch wieder mit Firefox/Iceweasel gut arbeiten ;-)

Der gläserne Schüler

Auch schon etwas her, aber trotzdem immernoch gut

Auf Heise war zu lesen, dass sich Berliner Schüler, Eltern und Lehrer gegen die Pläne der Stadtoberen sträuben, einen "gläsernen Schüler" (wie sie es nennen) zu erschaffen. Mit allerlei Argumenten versucht man, dies zu verhindern (Misslungene Bildungspolitik, kein pädagogisches Konzept, ...).

Im Prinzip ja unterstützenswert... ABER: Wer von den Schüler bzw. Kinder der Eltern ist denn nicht bei SchülerVZ registriert und bläst dort die Daten (und noch viel, viel mehr...) freiwillig ins weltweite, große Netz?

Ich finde, man sollte einfach einen Kompromiss machen: Der Holzbrink-Verlag bekommt von Berlin ein paar Euro, dafür fügt man im SchülerVZ ein paar Datenfelder ein, die nur "Berechtigte" lesen bzw. ändern können und man hat eine klassische Win-Win-Situation: Holzbrink verdient, Berlin hat die Daten und alle sind zufrieden</sarcasm>

COM/Seriell ansprechen unter Windows - Mess-PC

Dieser Artikel liegt schon ewig in meiner Queue, bevor er hier endgültig vergammelt geb ich ihn einfach mal so frei

Auslesen der Mess-PC Temperaturfühler unter Windows mit Hilfe von Python:

#!/usr/bin/env python

import re
import sys

fd = open("COM3")

line = fd.readline()
line = fd.readline()

fd.close()

erg = re.search("temperature=([.0-9]+).*humidity=([.0-9]+).*dewpoint=([.0-9]+)", line)

temp = float(erg.group(1))

RETURNCODE=0
RETURNSTRING='OK'

if temp > 40.0:
	RETURNCODE=1
	RETURNSTRING='WARNING'
elif temp > 45.0:
	RETURNCODE=2
	RETURNSTRING='CRITICAL'

out  =  'Temperatur %s: %4.1f C, ' % (RETURNSTRING, temp)
out +=  'Information: Luftfeuchte %4.1f%%, ' % float(erg.group(2))
out +=  'Taupunkt %4.1f' % float(erg.group(3))

out += '|Temperatur=%.1f;40.0;45.0; ' % temp
out += 'Luftfeuchtigkeit=%.1f ' % float(erg.group(2)
out += 'Taupunkt=%.1f' % float(erg.group(3))

print out
sys.exit(RETURNCODE)

check_netappfiler - New "homepage"

I just want to let you know that there is a new... err... "homepage" for my check_netappfiler-Plugin. You can find it - as I do most work for it at team(ix) - on http://people.teamix.net/~svelt/check_netappfiler/. There are also some example graphs of PNP4Nagios.

If you have problems and/or ideas what to monitor on your NetApp Toaste^WFAS don't hesitate to contact me!

German readers: Soll ich noch ein Forum auf MyNetApp.de eröffnen (lassen)?

cat ~/.gitconfig

[alias]
        br = branch
        st = status
        log1 = log --pretty=oneline --abbrev-commit
        rlog = log --pretty=format:\"%h %Cblue%cr%Creset %an %Cgreen%s%Creset\"
[color]
        ui = auto
[color "branch"]
        current = "yellow bold"
        local = cyan
        remote = "red bold"
[color "diff"]
        new = cyan
        old = magenta
        frag = yellow
        meta = green
        commit = normal
        whitespace = "white reverse"
[color "status"]
        changed = yellow
        added = magenta
        untracked = "blue bold"
        nobranch = "red bold"

check_netappfiler with support for "libsnmp-python"

As ''snmpget'' from Debian Etch is a real performance killer I rewrote parts of my check_netappfiler plugin for Nagios.

The Good News[tm]:
Look at the load at the time of switchting to the new version:

The Bad News[tm]:
You need NET-SNMP's Python bindings which aren't in Debian/Etch so I did a quick ("works for me") backport of NET-SNMP out of Lenny

Feedback welcome! ;-)

Asus WL500g Premium, DD-WRT, Linux - Teil 1

Bereits einige Zeit liegt bei mir ein Asus WL500g Premium (oder WL500gP), der eigentlich nur darauf wartet, seine Aufgabe zu übernehmen. Jetzt habe ich mir dann mal vorgenommen, das originale Firmware-Image "kaputt" zu machen, damit ich mich endlich mal mit dem Kistchen genauer beschäftigen muss ;-)

Schritt 1: DD-WRT einspielen
Nach einigem hin und her habe ich für meinen Router-Liebling DD-WRT entschieden. Nachdem ein Kollege auf dem selben Modell einfach ein Debian installiert hat, wäre das wohl die zweite Alternative. Allerdings wollte ich schon länger etwas ausprobieren, was sich OptWare nennt. Das Prinzip ist einfach: Software für das NSLU2 von Linksys compiliert, aber so, dass es unterhalb von /opt liegt. Und angeblich soll das auch mit DD-WRT funktionieren.

Man findet im Netz mehr oder minder haarsträubende Beschreibungen, was man alles tun muss, um auf das weiße Kästchen initial ein DD-WRT draufzubekommen. Aber es geht auch einfach:

  • Download der aktuellen Software von der Downloadseite von DD-WRT. Ich hab als erstes ein Mini-Image (v24sp1) draufgeflasht, bei anderen Routern wird das empfohlen und bei manchen hat es anders auch nicht funktioniert
    Wenn man aber schon auf der Seite ist, kann man sich auch gleich noch das Standard-Image (v24sp1) oder sogar das Mega-Image (v24-sp1) herunterladen. Ich nutze aktuell das Mega-Image, da ist alles (fast) drin, was ich brauche und noch mehr (siehe auch den Vergleich der verschiedenen Images)
  • aptitude install tftp installiert die notwendige Software zum Flashen
  • Network-Manager und ähnliche Dinge auf dem Rechner ausschalten. Die automatische Konfiguration spuckt immer wieder dazwischen, deswegen macht man das von Hand:

    root@linux:/tmp> ifconfig eth0 192.168.1.23/24 dev eth0 up
    root@linux:/tmp> ifconfig eth0 192.168.1.23/24 dev eth0 up # Zur Sicherheit nochmal...
    root@linux:/tmp> tftp 192.168.1.1
    tftp> verbose
    tftp> trace
    tftp> binary
    tftp> put dd-wrt.v24_mini_generic.bin # noch NICHT ENTER drücken!

  • Strom aus dem Asus ziehen, mit einem Stift den Reset-Taster (das ist der versenkte, NICHT der der raussteht!) gedrückt HALTEN(!) und Strom wieder anstecken.
    Nach ca. 10 Sekunden hat bei mir die Power-LED geblinkt. In div. Mailings liest man allerdings, dass es auch mal 20 oder 30 Sekunden dauern kann (oder nur 5...)
  • Jetzt im tftp-Client Return drücken, man sollte sehen, wie viele Pakete Richtung Asus geschickt werden.
    Wenn er fertig ist, Ruhe bewahren... lasst den Router zur Sicherheit einfach 2-3 Minuten stehen.
    Dann allerdings sollte ein ping 192.168.1.1 zeigen, dass der Router wieder erreichbar ist.
  • Mit einem Web-Browser geht man dann auf das Web-Interface http://192.168.1.1, ändert das Passwort und... Willkommen bei DD-WRT ;-)
  • Unter "Administration" -> "Firmware Upgrade" kann man nun bequem das oben heruntergeladenen Standard- oder Mega-Image einspielen>br />
    Da der Asus ja etwas mehr Flash besitzt, kann man diesen unter "Administration" -> "Management" -> "JFFS2" mit "JFFS2: Enable" und "Clean JFFS2: Enable" (einmalig!) mit anschließendem Reboot benutzbar machen.
  • Da ich eine 2,5"-USB-HD an das Gerät packen möchte, habe ich auch noch unter "Services" -> "Services" die Einstellungen für "Core USB support", "USB2.0 support", "USB storage support" und "ext2/ext3 FS support" eingeschalten. Das geht Out-of-the-Box nur mit dem Mega-Image, sonst muss man selbst Hand anlegen.

Update!
Nachdem ich es selbst nicht beachtet habe und beinahe einen Router gebrickt hätte, nochmal der Hinweis: Nach dem Flashen lasst den Router ein paar Minuten einfach in Ruhe stehen! NICHT Strom abziehen oder ähnliches! Warten!

Verzeichnisse nur über SSL erreichbar machen - und das benutzerfreundlich!

Die Anforderung:
Ein Verzeichnis auf einem Apache-Webserver (genauer das Admin-Frontend von Django) sollte nur via SSL erreichbar sein. Wenn jemand via HTTP auf (schützenswerte) Unterverzeichnisse zugreift, dann soll er "passend" umgleitet werden. Letztendlich kommt noch dazu, dass dieser Location-Container mit vielen anderen Einstellungen per Include-Anweisung in 2 virtuelle Hosts (HTTP und HTTPS) geladen wird. Für einige ist es OK, dass sie sowohl per HTTP als auch HTTPS ausgeliefert werden, für andere eben nicht. Da neben Django noch mehrere Tools auf diesem Web-Server laufen, gibt's dafür einen extra Location-Container:

<Location "/admin/">
  SetHandler              python-program
  PythonHandler           django.core.handlers.modpython
  PythonPath              "['/PFAD/ZUM/PROJECT/'] + sys.path"
  PythonAutoReload        On
  SetEnv                  DJANGO_SETTINGS_MODULE  PROJEKT.settings
</Location>

Lösung 1:
Im Modul mod_ssl gibt es die Direktive SSLRequireSSL On, mit der man sicherstellen kann, dass es eben nur via SSL ausgeliefert wird.
Nachteil: Kommt ein Benutzer via HTTP bekommt er nur "Du kummst hier net rein!". Effektiv, aber nicht wirklich schön.

<Location "/admin/">
  SetHandler              python-program
  PythonHandler           django.core.handlers.modpython
  PythonPath              "['/PFAD/ZUM/PROJECT/'] + sys.path"
  PythonAutoReload        On
  SetEnv                  DJANGO_SETTINGS_MODULE  PROJEKT.settings

  SSLRequireSSL           On
</Location>

Lösung 2:
Mit Hilfe von mod_rewrite bzw. dessen Direktiven RewriteCond und RewriteRule wird getestet, ob die Anfrage per HTTP kam und wenn ja an die selbe URL nur mit HTTPS weitergeleitet:

<Location "/admin/">
  SetHandler        python-program
  PythonHandler     django.core.handlers.modpython
  PythonPath        "['/PFAD/ZUM/PROJECT/'] + sys.path"
  PythonAutoReload  On
  SetEnv            DJANGO_SETTINGS_MODULE  PROJEKT.settings

  RewriteEngine     On
  RewriteCond       %{HTTPS}    off
  RewriteRule       .*          https://%{HTTP_HOST}/%{REQUEST_URI}
</Location>

Et voilà! ;-)

Seitdem ich bei dieser Firma bin...

"... habe ich auch schon mitbekommen, dass Du in Bezug auf Nahrung ein schwarzes Loch bist"

Danke, Herr Kollege ;-)

Links ohne Ende...

... gibt's ja bei der LUSC im Chat - meistens auch von einer Person. Allerdings muss ich mal ausnahmsweise sagen, dass ich das Filmchen (gut in dem Fall geht's wirklich mehr um den Ton) gleich mehrfach hintereinander hab laufen lassen.

Fluch der Karibik - auf der Gitarre

PS: Nein, ich werde jetzt nicht anfangen, jeden Link hier zu veroeffentlichen ;-)

Extend host search in Nagios navigation frame

Just a small patch to add PNP's wonderful AJAX-based host search to your Nagios navigation frame. OK, not add it - just replace this silly "show only first host which start with this string" search.

Step by Step:

If it doesn't work:

  • Check if you reloaded the left frame and your browser knows the patched side.html
  • Make sure there are no 404 (file not found) errors in your Apache logfiles (correct paths to PNP)
Inhalt abgleichen Inhalt abgleichen
Powered by Olark