Tutorial Completo: Enviando Mensagens XMPP via Shell com sendxmpp

1. O que é o sendxmpp

sendxmpp é uma ferramenta de linha de comando para enviar mensagens instantâneas via protocolo XMPP (Jabber). É simples, funciona direto no shell e pode ser usado em scripts e agendamentos como o crontab.


2. Pré-requisitos

  • Sistema Linux/Unix com Perl instalado.
  • O pacote sendxmpp instalado.

Instalar o sendxmpp

No Debian/Ubuntu:

sudo apt update
sudo apt install sendxmpp

No CentOS/RHEL (via EPEL):

sudo yum install epel-release
sudo yum install sendxmpp

3. Parâmetros necessários para enviar a mensagem

  • Usuário XMPP: seu login (exemplo: usuario1).
  • Senha: senha do usuário.
  • Servidor XMPP: endereço do servidor (exemplo: xmpp.exemplo.com).
  • Destinatário: JID completo do usuário destino (exemplo: [email protected]).

4. Comando básico para envio direto no shell

echo "Mensagem de teste" | sendxmpp -t -u usuario1 -p 'SenhaDoUsuario' -j xmpp.exemplo.com [email protected]

Explicação:

  • echo "Mensagem de teste": texto a ser enviado.
  • sendxmpp: programa que envia a mensagem.
  • -t: envia mensagem de chat para um único destinatário.
  • -u usuario1: seu nome de usuário (sem domínio).
  • -p 'SenhaDoUsuario': sua senha.
  • -j xmpp.exemplo.com: servidor XMPP.
  • [email protected]: destinatário completo.

5. Usando no Crontab

Para usar no crontab, crie um script shell para evitar expor senha na linha de comando ou variáveis de ambiente.

Exemplo de script /usr/local/bin/send_xmpp.sh

#!/bin/bash

USUARIO="usuario1"
SENHA="SenhaDoUsuario"
SERVIDOR="xmpp.exemplo.com"
DESTINO="[email protected]"
MENSAGEM="$1"

echo "$MENSAGEM" | sendxmpp -t -u "$USUARIO" -p "$SENHA" -j "$SERVIDOR" "$DESTINO"

Dê permissão de execução:

sudo chmod +x /usr/local/bin/send_xmpp.sh

Exemplo de linha no crontab

0 9 * * * /usr/local/bin/send_xmpp.sh "Mensagem automática diária"

6. Possíveis problemas e soluções

a) Erro de certificado SSL/TLS

Se o servidor usa certificado não confiável, adicione a opção para ignorar erros de certificado:

echo "Mensagem" | sendxmpp -t -u usuario1 -p 'SenhaDoUsuario' -j xmpp.exemplo.com -o ignore-cert-errors [email protected]

b) Falha na autenticação (SASL)

sendxmpp pode não suportar certos métodos modernos de autenticação. Atualize o pacote para a versão mais recente do repositório da sua distribuição.

Se continuar falhando, será necessário usar outra ferramenta ou script (fora do escopo deste tutorial).


7. Dicas de segurança

  • Evite passar senha diretamente no comando em scripts públicos.
  • Proteja o script com permissão restrita (chmod 700 ou chmod 500).
  • Considere usar arquivo ~/.sendxmpprc para armazenar credenciais, se possível.
  • Nunca exponha suas credenciais em logs ou processos visíveis.

8. Resumo

PassoComando / Ação
Instalar sendxmppsudo apt install sendxmpp
Enviar mensagem diretaecho "msg" | sendxmpp -t -u usuario -p senha -j servidor destinatario
Script para crontabCrie script com variáveis e execute no crontab
Ignorar erros SSLAdicione -o ignore-cert-errors
Rolar para cima