ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

sendxmpp

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Wiki/Icons/terminal.png sendxmpp {en} ist ein Kommandozeilen-Programm zum Verschicken von Instant Messages via XMPP-Protokoll. Die IMs können sowohl an individuelle Empfänger als auch in Chatrooms übertragen werden.

Es ist kein IM-Client, da mit sendxmpp IMs lediglich versandt, aber nicht empfangen werden können!

Voraussetzung zur Benutzung ist ein Account auf einem XMPP-Server {en}. Da es ein Konsolenprogramm ist, kann es in Skripten eingesetzt werden, zum Beispiel um Diagnosedaten eines entfernten Rechners zu übertragen.

Installation

sendxmpp_Screenshot_simple.png sendxmpp ist in den Paketquellen vorhanden und kann über das folgende Paket installiert [1] werden:

  • sendxmpp (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install sendxmpp 

sudo aptitude install sendxmpp 

Konfiguration

Zur bequemen Benutzung empfiehlt es sich, eine Datei .sendxmpprc im eigenen Homeverzeichnis anzulegen [2]. Diese Datei beinhaltet die Login-Daten zum XMPP-Server, den man zum Versenden der Nachrichten verwenden möchte, und wird automatisch im home-Verzeichnis des Benutzers gefunden, wenn sie vorhanden ist.

Die Datei enthält nur eine Zeile (es können natürlich Kommentarzeilen mit # eingefügt werden) mit dem Inhalt

# port und componentname sind optionale Angaben
user@server[:port] Passwort [componentname]

Hinweis:

Die Datei ~/.sendxmpprc muss aus Sicherheitsgründen dem Benutzer des Programms selbst gehören [4] und die Zugriffsrechte 600 haben [5]!

Die Angabe eines Ports ist nur notwendig, wenn dieser unterschiedlich von Port 5222 (ohne Verschlüsselung) bzw. 5223 (mit Verschlüsselung) ist oder es zu Fehlermeldungen (uninitialized value) kommt.

Die Angabe von componentname ist wahrscheinlich bei Benutzung von Google Talk erforderlich (componentname = gmail.com, bitte testen und ggf. Wiki-Artikel korrigieren!, siehe man-Page von sendxmpp)

Beispiel für die Konfigurationsdatei

Angenommen, Nutzerin Alice hat auf dem Server myjabberserver.com den Account alice@myjabberserver.com mit dem Passwort geheim.

Dann ist die Konfigurationsdatei wie folgt aufgebaut:

# Account von Alice
alice@myjabberserver.com geheim

Benutzung

Das Programm liest standardmäßig von stdin und sendet an die angegebene Empfängeradresse (zum Beispiel bob@bobsjabberserver.org):

echo 'hallo' | sendxmpp bob@bobsjabberserver.org 

Um die Kommunikation mit TLS zu sichern, nutzt man die Option -t:

echo 'geheime Nachricht' | sendxmpp -t bob@bobsjabberserver.org 

Um eine Nachricht ohne die ~/.sendxmpprc-Kofigurationsdatei verschicken zu können, werden die Optionen -u <Nutzer> -j <Servername> -p <Passwort> benutzt. Wenn also Nutzerin Alice mit dem Account alice@myjabberserver.com und dem Passwort geheim ohne Konfigurationsdatei eine Nachricht verschicken möchte, lautet die Syntax wie folgt:

echo 'hallo ohne Konfigurationsfile' | sendxmpp -u alice -j myjabberserver.com -p geheim bob@bobsjabberserver.org 

Übersicht der wichtiger Optionen von sendxmpp

Hier noch einmal die genannten und noch einige weitere Optionen in einer kurzen Übersicht:

Optionen für sendxmpp
sendxmpp-Option Beschreibung
-f <file> Benutzung einer alternativen Konfigurationsdatei. Diese Option funktioniert aber offensichtlich nicht!
-u <Nutzer> Damit ist der Programmaufruf auch ohne Konfigurationsdatei möglich!
-j <Servername>
-p <Passwort>
-r <Ressource> Angabe der Ressource, z.B. Laptop oder Rechner@home
-t Verschlüsselung der Nachricht mit TLS
-m <file> Hier wird nicht von stdin gelesen, sondern es wird der Inhalt von <file> versendet
-i interactive-mode, fortlaufendes Lesen und Versenden von stdin

Es gibt noch mehr Parameter, welche man auf der man-Page von sendxmpp nachlesen kann.

Probleme

Leider kann man nicht von jedem Server Nachrichten verschicken. sendxmpp verwendet im XML der Nachricht ein xmpp-ping, welches nicht von jedem Server unterstützt wird. Server, welche ejabberd {en} ab Version 2.1.0 {en} benutzen, sollten von diesem Problem nicht betroffen sein.

  • Folgende Server können nicht zum Verschicken von Nachrichten verwendet werden (Stand Dezember 2009, bitte ergänzen!):

    • xmpp-gmx.gmx.net

    • xmpp-webde.gmx.net

  • Folgende Server können zum Verschicken von Nachrichten verwendet werden (bitte ergänzen!):

    • jabber.org (Login nur ohne componentname möglich, die Angabe eines Ports ist nicht notwendig)

    • jwchat.org

    • headcounter.org mit Option -t

Anwendungsbeispiele

Um zum Beispiel einem Freund mit Computerkenntnissen die öffentliche IP des Computers mitzuteilen, damit dieser sich zu Wartungszwecken auf dem Rechner einloggt, kann dieser Einzeiler verwendet werden:

wget --quiet -O - http://showip.spamt.net | sendxmpp bob@bobsjabberserver.org 

Man kann sich die Temperatur der Festplatte oder die Ausgaben von Hardwaresensoren senden lassen, z.B. aus einem Skript, welches als Cron-Job (bitte Hinweis unten beachten) wiederholt wird. Damit ist die bequeme Überwachung von Hardwaredaten eines Computers von einem entfernten Computer möglich.

# Festplattentemperatur von /dev/sda
sudo hddtemp /dev/sda | sendxmpp bob@bobsjabberserver.org 
# Ausgabe von sensors
sensors | sendxmpp bob@bobsjabberserver.org 

Es ist möglich, kontinuierlich die Systemnachrichten mit dem sogenannten interactive-mode (Option -i) zu verschicken.

tail -f /var/log/syslog | sendxmpp -i bob@bobsjabberserver.org 

Hinweis:

Es gibt viele Fälle, in denen sendxmpp mit Root-Rechten ausgeführt würde, beispielsweise in Cron-Jobs oder Upstart-Scripts (siehe z.B. rc.local und NetworkManager/Dispatcher).

Da insbesondere bei Netzwerkverbindungen leicht ausnutzbare Sicherheitslücken entstehen können, ist es in solchen Fällen dringend anzuraten, sendxmpp mit normalen Benutzerrechten auszuführen. Für Zwecke wie die oben genannten, wo sendxmpp regelmäßig genutzt werden soll, ist es ratsam, hierfür einen eigenen Benutzer anzulegen (Den eigenen Benutzer hierfür zu verwenden ist keine gute Lösung: Damit hat ein potentieller Angreifer zwar keine root-Rechte, hat aber dennoch Zugriff auf alle Dateien des Benutzers).

sendxmpp kann dann mit sudo aufgerufen werden: sudo -H -u sendxmpp sendxmpp OPTIONEN. Die Option -u gibt den verwendeten Benutzer an (hier wird angenommen, dass der angelegte Benutzer sendxmpp heißt), die Option -H sorgt dafür, dass als Homeverzeichnis das des angegebenen Benutzers verwendet wird und nicht das des aufrufenden Benutzers (meist wohl root). Je nachdem, wo man die zu verwendende sendxmpp-Konfigurationsdatei ablegen möchte kann man diese Option natürlich auch weglassen.

  • XMPP {Übersicht} Übersichtsartikel

ubuntuusers.local › Wikisendxmpp