yowsup
1. Instalando as dependências
# yum install python26 python26-libs python26-argparse python26-dateutil
Obs: caso os pacotes não estejam disponiveis, tente instalar algum repositório, como: epel, remi, rpmforge, etc.
2. Baixando o yowsup:
# cd /opt
# wget https://github.com/tgalal/yowsup/archive/yowsup-master.zip --no-check-certificate
# unzip yowsup-master.zip
3. Configurando o yowsup:
# cd yowsup-master/src
# chmod +x yowsup-cli
# cp config.example zapzap.config
cc=55 #código do País(BR)
phone=55+DDD+NUMERO #Exemplo 559182820000
id=Nagios Alerta
password=VAMOS REQUISITAR
4. Registrando o Número:
# ./yowsup-cli -r sms -c zapzap.config
status: sent
retry_after: 3605
length: 6
method: sms
Onde:
- -r, --requestcode :: solicita o código de registro.
- sms :: recebe uma mensagem de texto com o código de registro.
- -c, --config :: arquivo de configuração que contém o número do WhatsAPP.
Em seguida, será recebido um sms contendo o código de registro.
4.1 Ativando o registro:
# ./yowsup-cli -R 123-456 -c zapzap.config
status: ok
kind: free
pw: aGGVSOGy6+OsMl0Ctz5nAc5tvO0=
price: US$0.99
price_expiration: 1400041960
currency: USD
cost: 0.99
login: 559182820000
type: existing
expiration: 1428155655
Onde:
- -R, --register :: Comando para registrar o número WhatsAPP.
- 123-456 :: código recebido via sms.
- -c, --config :: arquivo de configuração que contém o número do WhatsAPP.
Obs: inserir o campo "password=(item 3)" no arquivo
zapzap.config com o valor
pw da saida do comando acima(4.1).
pw :: aGGVSOGy6+OsMl0Ctz5nAc5tvO0=
5. Enviando uma mensagem:
# ./yowsup-cli -s 559182189171 "Testando ZapZap CLI - VOL" -w -c zapzap.config
Connecting to c.whatsapp.net
Authed 559182820000
Sent message
Got sent receipt
Onde:
- -s, --send :: Comando de envio de mensagem.
- 559182189171 :: Número de destino contendo código do País + DDD.
- -w, --wait :: Quando usado o -s(--send) a conexão não irá fechar até que o servidor (WhatsAPP) tenha recebido a mensagem.
- -c, --config :: arquivo de configuração que contém o número do WhatsAPP.
Obs: como foi dito anteriormente, utilizamos apenas os comandos
request,
register e
send.
Porém, existem outros comandos. Para isso:
# ./yowsup-cli -h
Nagios
1. Configurando os alertas do Nagios:
1.1 Criando o comando de envio.
Para isso, devemos alterar o arquivo
command-plugins.cfg do Nagios. No meu caso, está localizado em
/etc/nagios/objects/.
Inserir as linhas:
define command{
command_name notify-by-wapp
command_line /opt/yowsup-master/src/yowsup-cli --send $CONTACTPAGER$ "$HOSTADDRESS$ $HOSTALIAS$: $SERVICEDESC$ is $SERVICESTATE$" --wait --config /opt/yowsup-master/src/zapzap.config
}
1.2 Criando o contato:
Este será o contato que irá receber os alertas do Nagios pelo WhatsAPP. Para isso, vamos alterar o arquivo
contacts.cfg do Nagios. No meu caso, está em
/etc/nagios/objects/.
define contact {
contact_name nagiosadmin
alias Nagios Admin
contactgroups admins
host_notifications_enabled 1
service_notifications_enabled 1
host_notification_period 24x7
service_notification_period 24x7
host_notification_options d,u,r,f,s
service_notification_options w,u,c,r,f,s
host_notification_commands notify-by-wapp
service_notification_commands notify-by-wapp
can_submit_commands 1
retain_status_information 1
retain_nonstatus_information 1
email gleison.r2@gmail.com
pager 559182189171
use gleison
register 1
}
Obs: caso você possua um contato já configurado, basta alterar/inserir as seguintes linhas.
host_notification_commands notify-by-wapp
service_notification_commands notify-by-wapp
pager 559182189171
1.3 Configurando o Alerta de um Host:
Altere dentro do seu arquivo de um Host as seguintes linhas.
define host {
.
.
.
event_handler notify-by-wapp
contacts nagiosadmin
.
.
}
1.4 Configurando o Alerta de um Serviço:
Altere dentro do seu arquivo de um Serviço, as seguintes linhas.
define service {
.
.
.
event_handler notify-by-wapp
contacts nagiosadmin
.
.
}
* Importante: lembre-se sempre de verificar no Nagios, se as configurações estão corretas antes de tentar reiniciar.
# nagios -v /etc/nagios/nagios.cfg
Total Warnings: 0
Total Errors: 0
Testando
Existem várias formas de simular um teste.
Eu sempre realizo bloqueando a chegada do servidor Nagios a determinado Host, ou Serviço via IPtables. Assim, tenho como testar a falha em um serviço ou no host, sem que ocorra parada nos mesmos.
HOST (Exemplo Ping):
# iptables -I OUTPUT -p icmp -d HOST_MONITORADO -j DROP
SERVIÇO (Exemplo SMTP):
# iptables -I OUTPUT -p tcp -d HOST_MONITORADO --dport 25 -j DROP
Considerações
Espero que tenha sido direto.
No entanto, sempre ocorrem dúvidas, uma vez que o mundo Open Source proporciona isso de você poder trabalhar suas idéias, não ficando amarrado a ambientes fechados, trazendo os mais variados "labs".
Quaisquer dúvidas estamos ai.
[]s