ubuntuusers.de

go-sendxmpp

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


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Wiki/Icons/terminal.png go-sendxmpp 🇬🇧 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 eine Alternative zu sendxmpp, dessen Entwicklung eingeschlafen ist.

Das Programm ist kein vollwertiger IM-Client, es zielt eher darauf ab nur Nachrichten zu versenden, z.B. um automatisiert Nachrichten aus Scripten zu versenden.

Installation

Go-sendxmpp ist in den offiziellen Paketquellen enthalten und kann über das folgende Paket installiert werden[1]:

  • go-sendxmpp (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install go-sendxmpp 

Konfiguration

Zur bequemen Benutzung empfiehlt es sich eine Konfigurationsdatei zu nutzen. Wenn zuvor sendxmpp genutzt wurde, kann man probieren, ob go-sendxmpp mit dessen vorhandener Konfigurationsdatei funktioniert, da es versucht, sendxmpp-Konfigurationen zu lesen. Ansonsten empfiehlt es sich, das native Konfigurationsformat von go-sendxmpp zu nutzen. Dafür muss man die Datei ~/.config/go-sendxmpp/config im Homeverzeichnis anlegen [2]. Diese Datei beinhaltet die Login-Daten zum XMPP-Server, den man zum Versenden der Nachrichten verwenden möchte, und wird automatisch berücksichtigt (falls vorhanden).

Die Datei ist folgendermaßen aufgebaut:

username: <Benutzer>
jserver: <Server>
port: <Port>
password: <Passwort>
eval_password: <Kommando zum Erhalten des Passworts>
alias: <Alias für Chaträume>

Hinweis:

Die Datei ~/.config/go-sendxmpp/config sollte aus Sicherheitsgründen dem Benutzer des Programms selbst gehören [4] und die Zugriffsrechte 600, oder sogar 400, haben [5]!

username und password werden benötigt um go-sendxmpp ohne Übergabe von Benutzername und Passwort auf der Kommandozeile nutzen zu können. jserver wird in der Regel nicht benötigt. Alternativ kann statt password auch eval_password genutzt werden. Dabei wird ein Kommando angegeben, dass das Passwort zurückliefert (z.B. ein Passwortmanager. Die Angabe eines Ports ist nur notwendig, wenn der Server keine SRV Einträge gesetzt hat und der genutzte Port von Port 5222 (Verschlüsselung per StartTLS) bzw. 5223 (direkte Verschlüsselung mit DirectTLS) abweicht.

Will man Nachrichten an einen Gruppenchat (MUC) senden kann man einen alias (Nickname, der anderen Chatteilnehmern angezeigt wird) setzen, ansonsten wird "go-sendxmpp" als fallback genutzt.

Informationen zur Konfiguration können in der manpage nachgelesen werden:

man 5 go-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
username: alice@myjabberserver.com
password: geheim

Benutzung

Das Programm liest standardmäßig aus dem Standard-Input und sendet an die angegebene Empfängeradresse (zum Beispiel bob@bobsjabberserver.org):

echo 'hallo' | go-sendxmpp bob@bobsjabberserver.org 

Im Gegensatz zu sendxmpp verbindet sich go-sendxmpp nicht unverschlüsselt zum Server, das Nutzen von -t ist also nicht nötig. Die Benutzung von -t erzwingt lediglich die Benutzung von direktem TLS ggü. von StartTLS, ohne Angabe wird die Präferenz des Servers (SRV Einträge) genutzt oder auf StartTLS auf Port 5222 zurückgegriffen, wenn keine SRV Einträge vorhanden sind.

Um eine Nachricht ohne die ~/.config/go-sendxmpp/config-Kofigurationsdatei verschicken zu können, werden die Optionen -u <Nutzer> -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' | go-sendxmpp -u alice@myjabberserver.com -p geheim bob@bobsjabberserver.org 

Alternativ dazu kann man auch für weitere accounts eine Konfigurationsdatei anlegen, welche mit der Option -f <alternativ-account-config-file> benutzt werden kann:

echo 'alternativ-account-hallo' | go-sendxmpp -f <alternativ-account-config-file> bob@bobsjabberserver.org 

Übersicht der wichtiger Optionen von go-sendxmpp

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

Optionen für go-sendxmpp
go-sendxmpp-Option Beschreibung
-f <file> Benutzung einer alternativen Konfigurationsdatei.
-u <Nutzer> Damit ist der Programmaufruf auch ohne Konfigurationsdatei möglich!
-p <Passwort>
-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
-h Versenden einer Datei per http-upload

Es gibt noch mehr Parameter, welche man in der manpage von go-sendxmpp nachlesen kann:

man 1 go-sendxmpp 

Anwendungsbeispiele

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

wget --quiet -O - http://showip.spamt.net | go-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.

# Ausgabe von sensors
sensors | go-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 | go-sendxmpp -i bob@bobsjabberserver.org 

Man kann auch Dateien per "http-upload" (Option -h) verschicken.

go-sendxmpp -h ~/Bilder/screenshots/my-awesome-setup.png bob@bobsjabberserver.org 

Problembehebung

Es gibt viele Fälle, in denen go-sendxmpp mit Root-Rechten ausgeführt würde [6], beispielsweise in Cron-Jobs.

Da insbesondere bei Netzwerkverbindungen leicht ausnutzbare Sicherheitslücken entstehen können, ist es in solchen Fällen dringend anzuraten, go-sendxmpp mit normalen Benutzerrechten auszuführen. Für Zwecke wie die oben genannten, wo go-sendxmpp regelmäßig genutzt werden soll, ist es ratsam, hierfür einen besonderen 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.

go-sendxmpp kann dann mit sudo aufgerufen werden:

sudo -Hu sendxmpp go-sendxmpp OPTIONEN bob@bobsjabberserver.org 

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 go-sendxmpp-Konfigurationsdatei ablegen möchte, kann man diese Option natürlich auch weglassen.

Alternativen

Da das originale sendxmpp seit 2014 kein Update mehr erhielt sind, neben go-sendxmpp, einige weitere Alternativen erstellt worden:

Eine Übersicht über diverse sendxmpp-Alternativen gibt es im XSF-Wiki 🇬🇧.

Diese Revision wurde am 1. März 2025 09:33 von karzer erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Internet, Kommunikation