Linux

Freitag, 4. September 2009

libnotify - einfach und praktisch

Durch Hack A Day bin ich heute auf das kleine Programm libnotify gestoßen. Dieses erlaubt sehr einfach Benachrichtigungen auf dem Desktop auszugeben. Schnell ergeben sich einige Einsatzszenarien:
  1. Systemüberwachung:
    Sehr einfach ist die Ausgabe des syslogs oder von anderen Logdateien. Das geht sicher auch eleganter, aber diese wenigen Zeilen zeigen wie einfach libnotify funktioniert:
    #!/bin/bash
    
    X="EIN"
    syslog="leer"
    syslogalt="leer"
    dmsg="leer"
    dmsgalt="leer"
    publicip="leer"
    publicipalt="leer"
    
    while [ "$X" == "EIN" ] ; do
    
            syslog=$(tail -n 1 /var/log/syslog)
            if [ ! "$syslog" = "$syslogalt" ]; then
                    notify-send -i $HOME/skripte/syslog.png "syslog:" "$syslog"
            fi
            syslogalt="$syslog"
            sleep 5
            dmsg=$(tail -n 1 /var/log/dmesg)
            if [ ! "$dmsg" = "$dmsgalt" ]; then
                    notify-send -i $HOME/skripte/dmesg.png "dmesg:" "$dmsg"
            fi
            dmsgalt="$dmsg"
            sleep 5
            publicip=$(lynx -dump http://checkip.dyndns.org)
            if [ ! "$publicip" = "$publicipalt" ]; then
                    notify-send -i $HOME/skripte/ip.png "Neue IP-Adresse:" "$publicip"
            fi
            publicipalt="$publicip"
            sleep 5
    done
    
    Sehr primitiv und nichts für den Dauereinsatz, aber es funktioniert. Übrigens, unter skripte/ liegen bei mir auch die Icons für die Notifications.
  2. Irssi-Highlights remote:
    Was mich viel mehr begeistert, ist eine andere Möglichkeit. Wie viele, lasse ich Irssi remote in Screen laufen um es nicht immer neu starten zu müssen. Das macht leider die Ausgabe von Highlights als Notification schwieriger und beeinträchtigt so den Nutzen. Durch ein einfaches Skript lässt sich dies aber auch hier lösen:
    #!/bin/bash
    
    ssh server "tail -n 10 $HOME/.irssi/fnotify; > $HOME/.irssi/fnotify; tail -f $HOME/.irssi/fnotify |
            sed -ru "
                    s/&/\&/g;
                    s//\>/g;
                    s%(#[a-zA-Z]+ )<([^>]{0,10})>%\1\2 %g |
            while read heading message
            do
                    notify-send -i "$HOME/skripte/irssi.png" -- "${heading}" "${message}"
            done
    
    Vorlage für dieses Skript war dieses hier. Damit es funktioniert, wird das Irssi-Skript fnotify benötigt, welches in .irssi/scripts/ liegen muss und in Irssi mittels /run fnotify.pl gestartet wird.

Donnerstag, 16. Juli 2009

Pidgin Nachrichtenweiterleitung über DBus

Eigentlich hat alles damit angefangen, dass ich mir ein "Googlephone" G1 gekauft habe. Dieses hat echt gute Features und durch eine gewisse Anbindung an die Googledienste auch Push-Funktionen, wie Googlemail. Ich bin mir nicht sicher, aber ich vermute, dass auch Google Talk auf dem G1 als Push-Dienst funktioniert.
Beim Hören eines Podcasts kam ich auf die Idee, mir Systemnachrichten über Google Talk auf das Handy schicken zu lassen. Als erstes ist mir dann aber etwas Anderes eingefallen. Es wäre schön, dass, wenn man sich vom Rechner entfernt, die eintreffenden IMs weitergeleitet werden würden. Wenn man dann dringend erreicht werden muss, merkt man das auch.
Eigentlich gleicht man damit nur nicht vorhandene Fähigkeiten der proprietären Protokolle gegenüber jabber aus. Aber wer nutzt schon jabber... (leider)
Lange Rede, kurze Zusammenfassung: Ich wollte eine Weiterleitung von IMs auf jabber (Google Talk). Von DBus hatte ich schon mal gehört, daher hab ich über die DBus-Anbindung von Pidgin versucht. Im Netz habe ich einige passende Codefragmente gefunden, die allesamt in Python geschrieben waren. Ich hab es dann auch mit Python versucht, obwohl ich davon nicht viel Ahnung habe. Und hier ist das zusammengestückelte Skript zur Nachrichtenweiterleitung:
#!/usr/bin/env python

# Version: 0.2

import sys
import os
import xmpp
import time
import urllib
import urllib2
import dbus
import gobject
import dbus.glib
from dbus.mainloop.glib import DBusGMainLoop

def sendToJabber(text):
	tojid = 'Empfängeradresse'
	jidparams={}
	jid=xmpp.protocol.JID('Benutzername@server.domain')
	cl=xmpp.Client(jid.getDomain(),debug=[])
	jidparams['username']="Benutzername Sender"
	jidparams['password']="Passwort"
	jidparams['resource']="away-forward"
	
	
	con=cl.connect()
	if not con:
    		print 'could not connect!'
    		sys.exit()
	print 'connected with',con
	auth=cl.auth(jidparams['username'],jidparams['password'],resource=jidparams['resource'])
	if not auth:
    		print 'could not authenticate!'
    		sys.exit()
	print 'authenticated using',auth

	id=cl.send(xmpp.protocol.Message(tojid,text))
	print 'sent message with id',id

	time.sleep(1)


def onSessionIdleChanged(state):
    global away
    if state:
	away=1
    else:
	away=0

def receivedMessage(account, sender, message, conversation, flags):
    buddy = purple.PurpleFindBuddy(account, sender)
    alias = purple.PurpleBuddyGetAlias(buddy)
    text = alias + ": " + message
    if away == 1:
        sendToJabber(text)




away=0
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
bus.add_signal_receiver(receivedMessage, dbus_interface="im.pidgin.purple.PurpleInterface", signal_name="ReceivedImMsg")
bus.add_signal_receiver(onSessionIdleChanged, 'SessionIdleChanged', 'org.gnome.ScreenSaver')
obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")


loop = gobject.MainLoop()
loop.run()
Der Knackpunkt bei der Sache ist die Abfrage, ob der Benutzer abwesend ist. Ich habe es gelöst, indem das Skript den away-Status von Pidgin abfragt. Dazu habe ich mir einen extra Status angelegt, der bei kurzer Abwesenheitszeit automatisch eingestellt wird. Dabei wird dann auch automatisch das Google Talk-Konto abgemeldet, um eine unendliche Nachrichtenschleife vermieden wird. Da ich noch Twitgin für Twitter nutze, melde ich dieses damit auch automatisch ab, um nicht diese Nachrichten auch noch weitergeleitet zu bekommen. Leider gibt DBus den Status nicht unter dem bei Pidgin eingestellten Namen weiter, sondern unter einer Nummer. Diese muss man erst einmal herausfinden. Dafür ist die Zeile "print status". Startet man das Skript im Terminal, gibt dies den aktuellen Pidginstatus aus. Den Richtigen (den für abwesend) muss man dann in der nächsten Zeile eintragen.
Der Rest ist recht selbsterklärend, man benötigt nur die Adresse des Ziel-Google-Talk-Kontos und die Zugangsdaten eines zweiten jabber-Kontos zum Nachrichten senden.

Leider gibt es in Google Talk einen Bug beim Nachrichtenempfang (nicht alle werden angezeigt), aber man erhält jede Nachricht als Benachrichtigung. Und hoffentlich wird der Fehler in Android bald behoben!

Update: Das mit den Statusnummern hat sich als unzuverlässig erwiesen. Daher hab ich auf den Idle-Status von Gnome umgeschwenkt (schon im Code ergänzt).

Dienstag, 28. April 2009

Nach 231 langen Tagen..

muss mein AP doch leider ausgeschaltet werden.


root@OpenWrt:~# uptime
11:15:57 up 231 days, 11:49, load average: 0.00, 0.00, 0.00

Mittwoch, 1. April 2009

1. April

Sogar mein Betriebssystem will mich in den April schicken:

Wanda tot?

Montag, 26. Januar 2009

Günstige Möglichkeit mobil online zu sein

Schon länger hab ich mir gewünscht bei Bedarf immer und überall online gehen zu können. Bisher haben mich vor allem die Kosten abgehalten. Locker 100€ für ein entsprechendes UMTS-Modem und 25€ im 2 Jahresvertrag pro Monat waren mir immer viel zu viel.
Aber ich habe gar keine so hohen Ansprüche, große Downloads mache ich zuhause an der schnellen Leitung und Surfen mag ich auch nicht unbedingt. Wichtig sind mir eher Email, ssh und IM. Das alles zeigt dass ich weder große Geschwindigkeiten, noch ein großes Trafficvolumen brauche. Dann musste das ganze doch auch günstiger gehen.
Und in der Tat, das geht es.
Bei Ebay gibts die Novatel Merlin U530 PCMCIA-Karte recht günstig (mit ein bisschen Glück sogar unter 30€). Diese ist zwar recht langsam, unterstützt UMTS nur bis 384 kb/s, aber große Geschwindigkeiten waren ja eh nicht nötig. Dann fehlt nur noch der geeignete Zugang.
Das Problem ist, dass die gängigen Verträge immer 2 Jahre laufen und eigentlich viel zu groß und teuer sind. Mit langsamer Geschwindigkeit, nicht sehr häufiger und vor allem unregelmäßiger Nutzung macht ein Vertrag keinen Sinn. Als Alternative habe ich Simyo gewählt. Der Grund war, dass Simyo ein Prepaidangebot anbietet, mit dem man für 9,90€ 30 Tage lang ohne Zeitbegrenzung und bis zu 1GB Traffic online gehen kann. Das war es dann, diese Option musste es sein.
Die Inbetriebnahme unter Linux war leider nicht ganz so trivial wie gewünscht. Ich hatte gehofft, einfach den Networkmanager nutzen zu können. Leider wird die Karte zwar erkannt, aber nicht so eingebunden wie es der Networkmanager gerne hätte. Statt /dev/ttyUSB* wird die Karte als /dev/ttyS2 angesprochen.
So hat es dann bei mir geklappt:
modprobe usbserial vendor=0xaf0 product=0x5000
Ich hab den Eindruck dass nach Laden des Moduls mit diesen Parametern die Verbindung schneller ist.
gcom -d /dev/ttyS2
Nach Eingabe dieses Befehls muss man die PIN von Simyo angeben. Dann wechselt das rote Blinken der Karte zu einem blauen Blinken.
umtsmon
Mit umtsmon kann man sich dann endgültig einwählen, die LED hört auf zu Blinken und die Verbindung funktioniert! Dafür muss man nur ein minimales Profil mit den Angaben APN: internet.eplus.de, Benutzernamen und Passwort einzurichten.

Montag, 7. April 2008

Probleme mit der NSLU2 - oder auch nicht

Das war wohl der gegen die Steckdosenleiste tretende Bruder *g*

Mittwoch, 2. April 2008

Probleme mit der NSLU2

Jetzt ist es schon drei mal passiert, meine kleine Netzwerkschnecke hat sich einfach abgeschaltet. In den Logs war nichts zu finden. Nichtmal zu welcher Uhrzeit es genau passiert ist. Mal sehen was sich noch ergibt..

Dienstag, 1. April 2008

HOWTO: Kismet mit den wichtigsten Funktionen auf dem Nokia N770 OS2006

Ob Kismet legal genutzt werden darf und ob Wardriving nicht gegen irgendwelche Vorschriften verstößt soll hier nicht Thema sein. Dieser Artikel soll nicht dazu aufrufen und setzt sich nur theoretisch damit auseinander wie man ein lauffähiges Kismet erhält!
Der Grund hierfür ist, dass ich mal wieder mein N770 geflasht habe und die Programme neu installieren musste. Und mal wieder war kaum etwas zu Kismet zu finden. Und noch schwerer ist es eine lauffähige Version zu bekommen.

Zwei der etwas schwerer zu bekommenden Abhängigkeiten von Kismet sind libpcap0.8 und ncurses-base. Beide gibt es in folgendem Repository:
deb http://repository.maemo.org/ chinook free non-free
Kismet selbst ist wirklich schwer zu finden. Eine bei mir lauffähige Version gibt es unter http://www.zaurus.org.uk/download/nokiatablet/ .
Wenn alles installiert ist (mögliche andere Abhängigkeiten lassen sich bei http://maemo.org/downloads/OS2006/ finden), braucht man noch osso-gpsd und flite für alle wichtigen Funktionen. Danach sollte man die /etc/kismet/kismet.conf editieren und gpsd aktivieren (der Port muss nicht verändert werden) und ebenfalls die flite-Unterstützung aktivieren. Der Pfad zu flite muss so angegeben werden: festival=/usr/bin/flite.
Jetzt ist alles vorhanden für den Start. Um nicht jedesmal alles neu eingeben zu müssen, bietet sich ein Minimal-Skript an:

#!/bin/ash
rfcomm bind /dev/rfcomm0 MAC-ADRESSE GPS-MAUS
gpsd /dev/rfcomm0
kismet

Mit chmod +x ausführbar machen und als root ausführen. Nach Verwendung von Kismet muss das wlan-Interface noch neu konfiguriert werden oder das Gerät neugestartet werden.

Mittwoch, 2. Januar 2008

Neue Hardware - Neues Projekt

Ich bin richtig begeistert von den Geräten der Firma Linksys - mein neuestes ist eine NSLU2. Damit wollte ich mir den Traum von einem kleinen und stromsparenden Homeserver erfüllen.
  • Zuerst muss das richtige Betriebssystem dafür her. Meine Wahl ist auf Debian gefallen, da ich damit schon recht vertraut bin. Da zur Zeit meiner Installation war in der aktuellen Version leider der Installer kaputt, so musste ich die externe Festplatte von Hand vorbereiten und dann das Firmwareimage flashen.
  • Nachdem das alles nicht wirklich Probleme bereitet, mussten erstmal das Standard ssh-Passwort geändert werden und neue Schlüssel erzeugt werden. Jetzt war Zeit das fertige Debian für die Aufgaben vorzubereiten.
  • Die erste aufgabe, die vorher mein WRT54GL erledigte, sollte sein 24/7 irssi im screen laufen zu haben. Im Gegensatz zum Router hat die NSLU2 mit der externen 360GB Festplatte genug Platz für Skripte, Themes und Logs.
  • Zum einfachen Dateizugriff auch über das Internet wurde vsftpd aufgesetzt, der als sehr sicher gilt.
  • Für ein kleines Webseitenprojekt (nicht mehr als 20 Zugriffe pro Tag) wurde lighttpd installiert und konfiguriert. Dieser Webserver läuft sehr ressourcenschonend und auf der NSLU2 akzeptabel schnell. Die Adressierung erfolgt über einen dynDNS-Anbieter.
  • Für das LAN wurde ein NFS und ein Samba-Server aufgesetzt, wobei NFS weitaus weniger Probleme bereitete. Samba wollte irgendwie nur ungern meine sehr einfachen Ansprüche erfüllen und hatte viel zu viele Optionen und Voraussetzungen. Die NFS-Freigaben werden per fstab auf meinem Hauptrechner eingebunden, für die Mobilgeräte schwebt mir eine Idee vor, den Networkmanager per Skript je nach WLAN-ESSID automatisch die Freigabe zu mounten.
  • Ich habe experimentiert mit MediaTomb, was auch gut funktionierte, allerdings brachen dann oft VoIP-Anrufe ab, und so habe ich die Idee wieder aufgegeben.
  • Nach einigen Einloggversuchen von fremden Rechnern aus China und den USA, habe ich sshd noch einmal neu konfiguriert, sodass diese Angriffe nun erschwert werden sollten.
  • Weitere Einsatzgebiete werden wohl folgen...

Sonntag, 2. Dezember 2007

Unison - genial!

Das kennt sicher jeder der mehrere Rechner nutzt. Die Daten liegen auf
dem einen, gebraucht werden sie auf dem anderen. Dies löst jetzt bei mir
Unison. Es ist zwar nicht perfekt, aber es läuft schonmal super. So
sorgt es dafür dass auf beiden Rechnern die gleichen Bilder, Dokumente,
Mails (bei pop-Konten ja nicht selbstverständlich) und Chatlogs
vorhanden sind. Leider muss man für jedes Verzeichnis ein eigenes Profil
anlegen, aber das ist ja nicht wirklich schwer. Mal sehen ob sich in
einem Script alle Profile nacheinander abrufen lassen.

User Status

Du bist nicht angemeldet.

Suche

 

Aktuelle Beiträge

libnotify - einfach und...
Durch Hack A Day bin ich heute auf das kleine Programm...
Barahir - 4. Sep, 11:40
Endlich: Die große...
Nach der ersten größeren Ernte ging es jetzt...
Barahir - 3. Sep, 21:02
Ui, wie toll! Deine Biowaffenzucht...
Ui, wie toll! Deine Biowaffenzucht läuft! :-)
Binski (Gast) - 25. Aug, 15:47

Charts Lieblingskünstler - Diese Woche

RSS Box

Servoelectric guitar is a keytar with strings
[Keith Baxter] has undertaken something of a ‘Mount...
Mike Szczys - 7. Nov, 00:09
Physical email notification
One day computers will exist in every part of our...
Jakob Griffith - 6. Nov, 23:00
Cold cathode art piece controller
[Andrew] built a light box for an exhibition last...
Mike Szczys - 6. Nov, 22:00
Didgeridoo modded to include electronic manipulation
It’s not a bazooka, but this altered instrument...
Mike Szczys - 6. Nov, 19:58
Servo database
Starting a new robotics project and want to find the...
Caleb Kraft - 6. Nov, 15:49
UDK: Make the next Gears of War
Ever sat down from a long day of hacking and thought...
Jakob Griffith - 5. Nov, 23:49
Welcome back, HackaDay links
While browsing the web for new and interesting hacks...
Caleb Kraft - 5. Nov, 22:20
Electronic Jewelry
[Ellindsey000] posted this neat little pendant to...
Caleb Kraft - 5. Nov, 20:16
Laser etching fruit
Ever annoyed by those pesky stickers on your fruit?...
Caleb Kraft - 5. Nov, 19:00
Automated coffee bean roaster
We’ve featured several different ways to roast...
Caleb Kraft - 5. Nov, 16:05
Mac Mini – getting a little more useful
We’re pretty sure Apple decided to implement...
Jakob Griffith - 5. Nov, 01:00
Hack a Day; into the future
Through the years, our reader base has grown like we...
Caleb Kraft - 4. Nov, 22:00
25 Scariest experiments
Warning: This video contains actual footage of a severed...
Caleb Kraft - 4. Nov, 19:26
Stereoscopic 3d with a PIC micro
[Pyrofer] sent in his stereoscopic game project and...
Caleb Kraft - 4. Nov, 17:00
Knock detecting lock
[Steve] shows us his version of the knock detecting...
Caleb Kraft - 4. Nov, 16:00

Status

Online seit 1101 Tagen
Zuletzt aktualisiert: 4. Sep, 11:58