você está aqui: Home  → Arquivo de Mensagens

Mensagens Jabber via linha de comando (ideal para servidores de rede)

Colaboração: João Eriberto Mota Filho

Data de Publicação: 07 de março de 2011

Ontem tive a necessidade de fazer um script que provesse comunicação comigo, informando a situação de um servidor. A minha primeira ideia foi o envio de um e-mail. Mas depois pensei: poderia ser jabber! Isso faria a mensagem pipocar na tela, quando ocorresse um evento que necessite de atenção urgente. Então, fiz um $ apt-cache search jabber terminal e apareceu, dentre outros, o sendxmpp. Com ele, foi fácil a implementação do meu desejo tecnológico. A manpage é simples e clara.

A instalação e a configuração se deu como narrarei agora. Primeiro, instalei o sendxmpp:

  # apt-get install sendxmpp

Depois, dentro do usuário root, que iria executar a tarefa agendada que dispararia o script, criei um arquivo chamado /root/.sendxmpprc, com permissão 400 (obrigatório) com o seguinte conteúdo:

  nome_do_usuario@servidor.jabber   minha_senha

No meu caso, tenho um servidor jabber aqui na minha rede. Se quiser montar um igual, siga esta artigo: http://bit.ly/jabber_sasl_tls. Mas você poderá usar qualquer servidor. Sugiro o jabber-br.org. Veja detalhes em https://jabber-br.org. No meu caso, o nome de usuário foi o nome do servidor (pegasus).

Depois disso, considerando o uso de TLS para dar mais segurança (opção -t), a linha de comando foi algo assim:

  echo Olá | sendxmpp -t destinatario1@servidor.jabber destinatario2@jabber.outro.servidor

No caso mostrado, a palavra Olá será enviada para dois destinatários diferentes.

Só para que fique bem claro, a seguir, um exemplo para o alerta sobre problemas com um servidor Squid:

  # verifica problemas no log cache do squid a cada 10 min
  # colocar no cron como */10  8-18  *  *  1-5
  #
  # by eriberto - 2011
  
  TEMPO=$(date --date '1 minute ago' '+%Y:%H:%M' | cut -c 1-9)
  
  cat /var/log/squid/cache.log | grep $TEMPO | egrep '(filedescriptors|lifetime|failure)' > /tmp/squidcon2
  
  if [ -s /tmp/squidcon2 ]
  then
  echo -e "SQUID - OCORRENCIAS IRREGULARES \n\n$(cat /tmp/squidcon2)" | \
  sendxmpp -t eriberto@servidor.jabber
  fi

O script mostrado deve ser colocado no cron e irá verificar a situação do log cache do Squid a cada 10 minutos. Caso ocorra algum problema que possa paralisar a rede, será enviada uma mensagem para o administrador via Jabber. Veja um exemplo a seguir:

http://www.eriberto.pro.br/blog/wp-content/uploads/2011/03/pegasusjabber.jpg

Bem, é isso. Divirta-se!

Esta dica foi originalmente publicada, pelo seu autor, em http://www.eriberto.pro.br/blog, em 02 mar. 2011. O seu twitter é http://twitter.com/eribertomota


 

 

Veja a relação completa dos artigos de João Eriberto Mota Filho

Opinião dos Leitores

Luiz Agostinho
11 Mar 2011, 09:08
Opa,

Para aqueles que estiverem encontrando o erro abaixo ou parecido, basta atualizar o XML::Stream para a versão 1.23, aqui no Ubuntu 10.04 eu atualizei pelo cpan (install XML::Stream):

Can't use an undefined value as a HASH reference at /usr/share/perl5/XML/Stream.pm line 1165.

Abraço e valeu pela dica!
junior
09 Mar 2011, 11:31
Este comando funciona em windows ou linux somente?
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script