Tags: linux, transmission, xmpp, ssh

Problema: Queremos tener un comando sencillo que usar en nuestros script para mandarnos notificaciones

Solución: usar xmpp y crear un grupo con permisos para usar este comando

1- Instalar sendxmpp y crear comando

pi@bot ~ $ sudo apt-get install sendxmpp
...
pi@bot ~ $ sudo touch /usr/local/bin/say
pi@bot ~ $ sudo chmod 710 /usr/local/bin/say
pi@bot ~ $ sudo nano /usr/local/bin/say
#!/bin/bash
echo "$*" | sendxmpp -u usuario -p contraseña -j servidor_jabber -o dominio -t destinatario

#Ejemplo con gmail:
#sendxmpp -t -u mygmailuser -o gmail.com -p mygmailpassword another@jabber.com

Nota: Creamos este script como root (sudo) ya que contiene el usuario y contraseña de la cuenta que usamos para enviar y la derección de a quien queremos que se le envíen los mensajes que usen este comando. Ahora bien, probablemente queremos que el comando este disponible para usuarios que no queremos que sean sudo ni puedan leer el codigo del script, para ello veremos los siguientes pasos

2- Crear grupo que podrá enviar mensajes y darle permisos para ejecutar el comando

pi@bot ~ $ sudo groupadd snd
pi@bot ~ $ sudo visudo
[...]
%snd    ALL = NOPASSWD: /usr/local/bin/say

3- Ejemplo con transmission: aviso de descarga finalizada.

pi@bot ~ $ sudo adduser debian-transmission snd
pi@bot ~ $ nano /dwn/complete.sh
#!/bin/bash
sudo say DECARGADO: "$TR_TORRENT_NAME"
pi@bot ~ $ sudo service transmission-daemon stop
pi@bot ~ $ sudo nano /var/lib/transmission-daemon/info/settings.json
{
...
    "script-torrent-done-filename": "/dwn/complete.sh",
...
}
pi@bot ~ $ sudo service transmission-daemon start

4- Ejemplo con PAM: aviso de usuario conectado por ssh.

pi@bot ~/wks/scripts $ touch notif-login.sh
pi@bot ~/wks/scripts $ chmod +x notif-login.sh
pi@bot ~/wks/scripts $ nano notif-login.sh
#!/bin/bash
if [ "$PAM_TYPE" != "open_session" ]; then
    exit 0
fi
if [ "${PAM_RHOST:0:10}" = "192.168.1." ]; then
    exit 0
fi

USER="$PAM_USER@$PAM_RHOST"
if [ -z "$PAM_RHOST" ]; then
    USER="$PAM_USER"
fi

sudo say $(date "+%d/%m/%Y %H:%M")" > $USER inicia $PAM_SERVICE en TTY $PAM_TTY" &
pi@bot ~ $ sudo nano /etc/pam.d/sshd
# PAM configuration for the Secure Shell service
# ...
session optional pam_exec.so /home/pi/wks/scripts/notif-login.sh