[[Vorlage(Getestet, noble)]] {{{#!vorlage Wissen [:Pakete_installieren:Pakete installieren] [:Editor: Einen Editor öffnen] [:Terminal: Ein Terminal öffnen] [:chown: Ändern des Dateibesitzers] [:chmod: Setzen der Dateirechte] [:Root-Rechte:Mit Root-Rechten arbeiten] }}} [[Inhaltsverzeichnis(1)]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] [https://salsa.debian.org/mdosch/go-sendxmpp/ go-sendxmpp] {en} ist ein Kommandozeilen-Programm zum Verschicken von [:Instant_Messenger: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]: {{{#!vorlage Paketinstallation go-sendxmpp, universe }}} = 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: jserver: port: password: eval_password: alias: }}} {{{#!vorlage 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 [wikipedia:SRV_Resource_Record: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 [:man:manpage] nachgelesen werden: {{{#!vorlage Befehl 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 [:Shell/Umleitungen:Standard-Input] und sendet an die angegebene Empfängeradresse (zum Beispiel `bob@bobsjabberserver.org`): {{{#!vorlage Befehl 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 ([wikipedia:SRV_Resource_Record: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 -p ` 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: {{{#!vorlage Befehl 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 ` benutzt werden kann: {{{#!vorlage Befehl echo 'alternativ-account-hallo' | go-sendxmpp -f bob@bobsjabberserver.org }}} == Übersicht der wichtiger Optionen von go-sendxmpp == Hier noch einmal die genannten und noch einige weitere Optionen in einer kurzen Übersicht: ||<-2 rowclass="titel"> Optionen für go-sendxmpp || || go-sendxmpp-Option || Beschreibung || || `-f ` || Benutzung einer alternativen Konfigurationsdatei. || || `-u ` || <|2 (> Damit ist der Programmaufruf auch ohne Konfigurationsdatei möglich! || || `-p ` || || `-m ` || Hier wird nicht von stdin gelesen, sondern es wird der Inhalt von `` 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 [:man:manpage] von go-sendxmpp nachlesen kann: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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. {{{#!vorlage Befehl # 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. {{{#!vorlage Befehl tail -f /var/log/syslog | go-sendxmpp -i bob@bobsjabberserver.org }}} Man kann auch Dateien per ''"http-upload"'' (Option `-h`) verschicken. {{{#!vorlage Befehl 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 [:adduser: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: {{{#!vorlage Befehl 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: * [github:moparisthebest/sendxmpp-py:sendxmpp-py] {en} * [github:moparisthebest/sendxmpp-rs:sendxmpp-rs] {en} * [github:majewsky/xmpp-bridge:xmpp-bridge] {en} * [gitlab:sbrl/xmppbridge:xmppbridge] {en} Eine Übersicht über diverse `sendxmpp`-Alternativen gibt es im [https://wiki.xmpp.org/web/User:MDosch/Sendxmpp_incarnations XSF-Wiki] {en}. = Links = * [https://salsa.debian.org/mdosch/go-sendxmpp/ Projektseite] {en} * [:XMPP:] {Übersicht} Übersichtsartikel #tag: Internet, Kommunikation