Blog del Podcast
podcast      GitHub      Twitter   Telegram

Bot Matrix en Bash

Tiempo estimado de lectura: 8 minutos. 891 palabras. matrix

Si has montado tu servidor Matrix, probablemente quieras tener publicaciones automatizadas de algunos de tus scripts, proyectos, etcétera…

He encontrado un repositorio en Github dónde hay publicado un script en bash llamado matrix.sh, que permite hacer esto de un modo sencillo y además utiliza la sintaxis html para enriquecer el texto.

Características

Instalación

Descargamos el script del repositorio de GitHub. Hay otro repositorio por si se elimina el proyecto original.

Tenemos que instalar las dependencias curl y jq

En Ubuntu, Debian , ...

sudo apt-get install curl jq

A mi personalmente me gusta instalar los scripts en el sistema. De esta manera, no tengo que recordar donde están.

Vamos a crear un enlace simbólico para que cuando escriba en la terminal matrix, se ejecute el script.

sudo ln -s /home/angel/scripts/matrix.sh/matrix.sh /usr/bin/matrix

La ruta del Home es la perteneciente a mi máquina. Tu tienes que especificar la ruta donde está tu script

Logearnos al servidor

Vamos a crear un nuevo usuario en nuestro servidor, que será el que utilizaremos para el bot.

Nos logeamos con:

matrix --login

El token quedará guardado en ~/.matrix.sh. Si ya existe, se sobrescribirá. Dado que el contenido de este archivo permite acceder a tu servidor doméstico, debe mantener su contenido en secreto. Por tanto, se creará con el modo de acceso 600.

El inicio de sesión también establece un nombre para el dispositivo que estas utilizando para conectarse. Por defecto, esto es <user>@<host> using matrix.sh, pero puede establecer otro nombre usando el =–identifier=opción:

matrix --login --identifier="linux server @home"

Error en Manjaro, solución al comando hostname

He visto que el comando hostname no está disponible en Manjaro. La verdad es que no he encontrado a que paquete pertenece.

Así que lo he solucionado de una forma cutre pero que funciona.

Crea un script con el siguiente contenido:

mkdir ~/hostname ; nano ~/hostname/hostname

Ahora pega:

#!/bin/bash

cat /etc/hostname

Ahora crearemos un enlace sibólico al script:

sudo ln -s ~/hostname/hostname /usr/bin/hostname

Cuando ejecutemos el comando hostname, hará un cat de la ruta /etc/hostname, que es el nombre de hostname.

Selecciona una Sala

Con nuestro usuario, podemos agregar el bot a una sala, pero el bot tiene que aceptar formar parte de ella. Vamos a aceptar estar dentro de la sala.

Listamos salas a donde esté nuestro bot.

matrix  --list-rooms

Nos unimos a una de estas salas. Seguimos el menú para unirnos.

matrix --join-room

Recuerda que tanto el Token como los ID de las salas, quedará en el archivo de configuración ~/.matrix.sh

La estructura del archivo, quedaría así:

MATRIX_TOKEN="fsTYVEYSHnu73490765623sIM"
MATRIX_HOMESERVER="https://matrix.midominio.duckdns.org"
MATRIX_USER="@usuario:matrix.midominio.duckdns.org"

MATRIX_ROOM_ID="!Rt2JHO&85GJKIpT1K:matrix.midominio.duckdns.org"

Seleccionar una sala predeterminada

Puedes seleccionar una sala predeterminada que se utilizará si no proporciona una room_id en tiempo de ejecución.

Mostrará todas las salas unidas, así como las salas a las que estas invitado. Seleccionar uno de estos últimos también aceptará la invitación y se unirá a esa sala.

Sin iniciar sesión

También puedes utilizar este script sin iniciar sesión primero. Si tienes acceso a un token, puedes usarlo así:

matrix --homeserver=https://matrix.org --token=abcdefg --room=!2o587thjlgjHUIUHni:matrix.org

Enviar mensajes

Como he instalado el script en mi sistema, ahora para ejecutarlo solo tendré que introducir el comando matrix

matrix  "este es mi primer mensaje"

También podemos utilizar la opción --send, aunque no es necesario introducirla:

matrix  --send "este es mi primer mensaje"

Enviar un mensajes de texto con sintaxis html

Para que habilite la sintaxis html, introduciremos la opción --html

matrix --html "This is <strong>very important</strong>."

Mostrando el contenido de una variable

Esto se pone interesante. Con echo, podemos enviar el mensaje a matrix y podemos no solo escribir un texto, sino que mostrar el valor de una variable:

echo "Hola" | matrix.sh -

Si estuviéramos dentro del directorio donde está el script, lo haríamos así:

echo "Hola" | ./matrix.sh -

Formato de código

Podemos utilizar --pre para enviar mensajes formateados como código. Esto también se escapará Etiquetas HTML.

Listamos el contenido de un directorio:

ls -l | matrix --pre -

Ejecutando el script sin instalar:

ls -l | ./matrix.sh --pre -

## Enviar archivos

Para enviar un archivo, es tan sencillo como:

matrix --file=upload.zip

Además use --audio, =-image=o =–video=para enviar archivos como audio, imágenes o video, respectivamente:

matrix --file=IMG1234.jpg --image

## Enviar a otra sala

Puedes utilizar --room=<room_id> para proporcionar un room_id. Esto reemplaza la sala predeterminada.

matrix --room='!OEassajhhkasLULVAa:matrix.org' "Prueba"

A bash no le gustan los signos de exclamación en cadenas entre comillas dobles. Es recomendable utilizar comillas simples para la identificación la sala.

## Otras acciones

## Fuentes


Publicado por Angel el Wednesday 26 January del 2022 y actualizado el Monday 06 February del 2023



También te puede interesar:




Powered by org-bash-blog

Written in OrgMode with Emacs and converted to HTML with Pandoc

Licencia de Creative Commons
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.