Short howto: Smartd with mail notification to remote address

This guide is for debian squeeze

SMART is a nice mechanism to detect hard disc drive problems early. There is a daemon that sends user mails in order to notify you. But for normal desktops machines you usually don’t have your mail server set up properly so you can only receive local mails.

They can be read using the terminal command „mail“, but using your graphical user interface you won’t notice them in time.

Therefore I was searching for a way to send them to my normal account „xy@arcor.de“. To make this happen, the local command "echo "hello" | mail xy@arcor.de -s 'testmail'" has to work.

I found some tutorials about how to set up exim 4 to use a smarthost to forward all mails to. But unfortunately this didn’t work with my provider arcor.de, they don’t seem to like it for spamming reasons. Luckily google has less of a problem with that, I guess they are just happy to be able to read the mails too …

I followed the great tutorial http://wiki.debian.org/GmailAndExim4 on how set up gmail as smarthost. Important was here to use my local (unofficial) domain jet.bebop as it is configured on the local machine. This way exim can detect if the mail is supposed to go to localhost and does not involve google when just sending mail to „root“.

Testing after following the howto:

$ echo „Hello“ | mail xy@arcor.de -s „Testing“

$ tail /var/log/exim4/mainlog
2011-02-13 14:03:35 1Pobbz-0003bM-E4 xy@arcor.de R=smarthost T=remote_smtp_smarthost H=gmail-smtp-msa.l.google.com [74.125.43.109] X=TLS1.0:RSA_ARCFOUR_SHA1:16 DN=“C=US,ST=California,L=Mountain View,O=Google Inc,CN=smtp.gmail.com“
2011-02-13 14:03:38 1Pobbz-0003bM-E4 Completed

And I got mail.

Moving on to the second part, setting up smart, which is quite easy on debian.

I just installed smartmontools and enabled the smartd in the default configs.

$ cat /etc/default/smartmontools
# Defaults for smartmontools initscript (/etc/init.d/smartmontools)
# This is a POSIX shell fragment

# List of devices you want to explicitly enable S.M.A.R.T. for
# Not needed (and not recommended) if the device is monitored by smartd
#enable_smart=“/dev/hda /dev/hdb“

# uncomment to start smartd on system startup
start_smartd=yes

# uncomment to pass additional options to smartd on startup
#smartd_opts=“–interval=1800″

By default, smartd uses all drives in your system which is what I want. The config file is imho very verbose and can be modified to your needs. Important is to change the -m xy@arcor.de part to the desired mail address.

$vim /etc/smartd.conf

DEVICESCAN -d removable -n standby -m xy@arcor.de -M exec /usr/share/smartmontools/smartd-runner

After reloading smart, everything should be set up and ready.

$ /etc/init.d/smartmontools reload
Reloading S.M.A.R.T. daemon: smartd.

But you can also test if the smart daemon can send mails to you by the following procedure just to sure:

Create a temporary config file just for the purpose of testing the mail delivery. -M test will make the daemon send an initial test notification, /dev/sdb can just be any drive on your system:

$ echo „/dev/sdb -m xy@arcor.de -M test“ > /etc/smartd.conf.test
$ smartd -c /etc/smartd.conf.test

You should receive a mail like this:

This email was generated by the smartd daemon running on:

host name: jet
DNS domain: bebop
NIS domain: (none)

The following warning/error was logged by the smartd daemon:

TEST EMAIL from smartd for device: /dev/sdb [SAT]

For details see host’s SYSLOG (default: /var/log/syslog).

You can now kill that test daemon and sleep well with your smart monitored discs.

Advertisements

QBasic on Linux

Mich hat es heute irgendwie gepackt und ich habe meine alten Jugendsünden wieder einmal herausgekramt. BASIC heißt das Zauberwort.

Früher auf dem 486er, den ich von meinem Onkel hatte (vielen Dank an dieser Stelle noch einmal, wer weiß ob mich der PC und das Programmieren ohne dich jemals so gefessel hätte), habe ich sehr viel mit QBasic herumgespielt, ohne ein Fünkchen Ahnung davon zu haben. Es war sehr spannend was man alles mit ein paar Zeilen Text machen konnte, es machte Spaß bestehende Programme zu analysieren, die Hilfe-Funktion zu durchforsten, wilde, durch alle Farben iterierende Schleifen zu bauen. Dass ich dabei den furchtbarsten Code meines Lebens produziert habe, war damals wohl egal.

Ich bin heute jedoch froh, dass ich diese Relikte noch aufgehoben habe, samt einer Kopie von QBasic.

Mit Hilfe von dosemu bzw. xdosemu kann man das Programm (qb.exe) nämlich noch wunderbar starten und seine alten Machwerke bestauenen. Vielleicht führe ich mein großes Spieleprojekt „Hunt“ einmal zu Ende … im Rentenalter.

Freebasic habe ich auch probiert zu verwenden, es war auf die schnelle aber nicht auf AMD 64 zum laufen zu bringen, 32Bit X Libs gefehlt und den Code habe ich nur als BASIC Code gefunden …

Anbei ein paar Screenshots von qb.exe auf dosemu.
(Für irgendwelche Schmerzen, geistiger oder körperliche Art dir durch den Anblick des Codes entstehen könnten übernehme ich keinerlei Haftung.)

Linux NFS export auf Mac OSX mounten

Dank der Firma, komme ich dieses Wochenende in den Genuss mich ein wenig mit Mac OSX außereinanderzusetzen. Leihweise habe ich ein Macbook zur Verfügung und versuche mich ein wenig damit zurecht zu finden. Als alter Linux user ist man doch sehr an einige Begebenheiten gewohnt aber das mounten von NFS sollte ja doch möglich sein.

Mein Desktop Rechner exportier ein Dateisystem /media das ich gerne auf den Dektop in das Verzeichnis jet mounten möchte, doch unter OSX erwies sicht das als nicht ganz Problemlos.

Ein normales mounten des Dateisytems schlug fehl.

sudo mount -t nfs -o ro 192.168.0.2:/media /Users/bpeter/Desktop/jet/

Dies ergab den folgenden Fehler "mount_nfs: /Users/bpeter/Desktop/jet/: Operation not permitted". — Natürlich nicht sonderlich aussagekräftig, da die Freigabe für die Client IP des Macbooks durchaus in der /etc/exports sowie /etc/hosts.allow gegeben war. Ein Blick in die syslog-Datei der Linux Kiste verriet jedoch schon etwas mehr.

Apr 4 21:27:15 jet nfsd[3186]: NFS request from noname originated on insecure port, psychoanalysis suggested

Ein Blick in die manpage von mount_nfs enhüllte dann, dass es eine Option namens „resvport“ gibt. Diese sorgt dafür, dass der verwendete Port des NFS Clients unter den reservierten Portnummern ist und daher auch von etwas pingeligen NFS Servern akzeptiert wird. Um das mount Problem also zu lösen musste ich nur folgenden Befehl verwenden:

sudo mount -t nfs -o ro,resvport,noowners 192.168.0.2:/media /Users/bpeter/Desktop/jet/

Zusätzlich habe ich den Befehl noowners angehängt, dieser sorgt dafür dass ich die Dateien öffnen kann auch wenn sie nicht die selbe UID wie ich haben. (Ein Hoch auf die Sicherheit von NFS …). Das Verzeichnis wurde nun korrekt eingebunden.

apt-get -b source

Nun nutze ich debian schon ca. 5 Jahre und wurde gestern doch wieder einmal völlig neu beeindruckt.

Mein Problem war einfach: Ich wollte ein Programm schreiben das global alle Keyboard Events behandelt. So etwas ist praktisch für Shortcuts oder so selbstverständlichen Dingen wie Push to Talk im Voice Chat Programmen.

Da X das von Haus aus nicht vorsieht, da dies durchaus ein nachvollziehbares Sicherheitsrisiko darstellt, wenn man hierbei z.B. an Keylogger denkt.

Dennoch gibt es Abhilfe in Form von XEvIE http://freedesktop.org/wiki/Software/XEvIE. Das klingt nun genau nach dem was ich gesucht habe. Doch nachdem die Extension im X-Server installiert war ging das Beispielprogramm immer noch nicht, was nicht zuletzt daran liegt dass das Projekt leider verwaist ist.

Glücklicherweise habe ich von rE in #linux-clan @ quakenet einen Tipp bekommen. http://bugs.freedesktop.org/show_bug.cgi?id=17394 ein paar kleinen Codeänderungen sollten der Schlüssel zum funktionierenden XEvIE sein. Es trennte mich nur noch das Kompilieren eines eigenen X-Servers vom Glück. Ohje …

Aber. Alles halb so schlimm, debian verfügt über eine klasse Sourceverwaltung die es mit wenigen Befehlen ermöglicht die vorhandenen debian Pakete selber zu bauen und beliebige Änderungen vorzunehmen. Weitere Infos dazu gibt es hier http://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.en.html. Das Installieren ist so einfach wie es nur geht, einfach das selbst gebaute Paket mit dpkg -i ausführen und das original wird ersetzt.

$ ./xevidemo
Delay is 0 milliseconds
major = 1, minor = 0
XevieStart(dpy) finished
(   0) KeyRelease
(   1) KeyPress
        State: 0 KeyCode: 26
        Char Count: 1 KeySym: 61 char: |a|
(   2) KeyRelease
(   3) KeyPress
        State: 0 KeyCode: 28
        Char Count: 1 KeySym: 64 char: |d|

Edit 2008-09-29:
Herrlich, heute kam das xserver-xorg-core update mit dem XEvIE fix integriert. Nun gut, immerhin haben wir was gelernt!