go-sendxmpp
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 24.04 Noble Numbat
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.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
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:
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:
sendxmpp-py 🇬🇧
sendxmpp-rs 🇬🇧
xmpp-bridge 🇬🇧
xmppbridge 🇬🇧
Eine Übersicht über diverse sendxmpp
-Alternativen gibt es im XSF-Wiki 🇬🇧.
Links¶
Projektseite 🇬🇧
XMPP Übersichtsartikel