-- Leo's gemini proxy

-- Connecting to perso.pw:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;

Send XMPP messages from the command line


Author: Solène

Date: 25 May 2023

Tags: xmpp monitoring selfhosting reed-alert


Comment on Mastodon


Introduction


As a reed-alert user for monitoring my servers, while using emails works efficiently, I wanted to have more instant notifications for critical issues. I'm also an happy XMPP user, so I looked for a solution to send XMPP messages from a command line.


More about reed-alert on the blog

Reed-alert project git repository


I will explain how to use the program go-sendxmpp to send messages from a command line, this is a newer drop-in replacement for the old perl sendxmpp that doesn't seem to work anymore.


go-sendxmpp project git repository


Installation


Following go-sendxmpp documentation, you need go to be installed, and then run `go install salsa.debian.org/mdosch/go-sendxmpp@latest` to compile the binary in `~/go/bin/go-sendxmpp`. Because it's a static binary, you can move it to a directory in `$PATH`.


If I'm satisfied of it, I'll import go-sendxmpp into the OpenBSD ports tree to make it available as a package for everyone.


Configuration


Open a shell with the user that is going to run go-sendxmpp, prepare the configuration file in its default location:


mkdir -p ~/.config/go-sendxmpp
touch ~/.config/go-sendxmpp/config
chmod 400 ~/.config/go-sendxmpp/config

Edit the file `~/.config/go-sendxmpp/config` to add the two lines:


username: myuser@myserver
password: hunter2_oryourpassword

Now, your user should be ready to use `go-sendxmpp`, I recommend always enabling the flag `-t` to use TLS to connect to the server, but you should really choose an XMPP server providing TLS-only.


The program usage is simple: `echo "this is a message for you" | go-sendxmpp dest@remote`, and you are done. It's easy to integrate it in shell tasks.


Note that go-sendxmpp allows you to get the password for a command instead of storing it in plain text, this may be more convenient and secure in some scenarios.


Reed-alert configuration


Back to reed-alert, using go-sendxmpp is as easy as declaring a new alert type, especially using the email template:


(alert xmpp "echo -n '[%state%] Problem with %function% %date% %params%' | go-sendxmpp user@remote")

;; example of use
(=> xmpp ping :host "dataswamp.org" :desc "Ping to dataswamp.org")

Conclusion


XMPP is a very reliable communication protocol, I'm happy that I found go-sendxmpp, a modern, working and simple way to programmatically send me alerts using XMPP.

-- Response ended

-- Page fetched on Mon May 6 01:14:36 2024