[AsteriskBrasil] Manager Asterisk

Eder Souza eder.souza em bsd.com.br
Quarta Maio 9 11:14:27 BRT 2012


Atendendo a pedidos vamos compartilhar, o nagios me atende muito bem,
consigo monitorar qualquer coisa com ele até mesmo quantidade de ligações
no asterisk....

Servidor para ficar rodando na máquina Asterisk

#Eng. Eder de Souza
#
#    Data: 22-09-2008

use IO::Socket::INET;
use strict;

my $numero;
my $arquivo;
my $r;
my $port = shift
    or die"Missing port number\n";
my $socket = IO::Socket::INET->new('LocalPort' => $port,
                                   'Proto' => 'tcp',
                                   'Listen' => SOMAXCONN)
    or die "Can't create socket ($!)\n";
print "Server listening\n";
while (my $client = $socket->accept) {
    my $name = gethostbyaddr($client->peeraddr, AF_INET);
    my $port = $client->peerport;
    while (<$client>) {
        print "[$name $port] $_";
        print $client "$.: $_";
$r = $_;
if( $r =~ /Notification/) {
          $r =~ s/Notification/notifica/g;
               }
 if( $r =~ /PROBLEM/) {
           $r =~ s/PROBLEM/problemas/g;
                }
if( $r =~ /RECOVERY/) {
          $r =~ s/RECOVERY/recuperação/g;
                         }
if( $r =~ /vader/) {
      $r =~ s/vader/veider/g;
           }
if( $r =~ /alert/) {
          $r =~ s/alert//g;
               }
if( $r =~ /Eder/) {
          $r =~ s/Eder/éder/g;
               }
if( $r =~ /Memoria/) {
          $r =~ s/Memoria/memória/g;
             }
if( $r =~ / is /) {
          $r =~ s/ is / está /g;
             }
if( $r =~ /WARNING$/) {
       $r =~ s/WARNING/em perigo/g;
         }
if( $r =~ /CRITICAL$/) {
     $r =~ s/CRITICAL/critico/g;
      }
print $r,"\n";
        system("echo '$r' > /tmp/test.txt");
        open ($arquivo, '</var/lib/asterisk/agi-bin/telefones.txt');
        while (<$arquivo>) {
           $numero = $_;
           my $discar = "/var/spool/asterisk/".$numero.".call";
           my $arqdestino = "/var/spool/asterisk/outgoing/" ;
           open(EXTEN,">$discar");
           print EXTEN "Channel: Sip/$numero\n";
           print EXTEN "MaxRetries: 5\n";
           print EXTEN "RetryTime: 60 \n";
           print EXTEN "WaitTime: 60 \n";
           print EXTEN "Context: Nagios\n";
           print EXTEN "Extension: 3300\n";
           print EXTEN "Priority: 1\n";
           close(EXTEN);
           system("mv /var/spool/asterisk/*.call $arqdestino");
       }
       close $arquivo;

}
    close $client
        or die "Can't close ($!)\n";
}
die "Can't accept socket ($!)\n";


Escolha uma porta de sua preferencia para deixar em listem e execute ex:
"perl serverNagios 1234"

Os IF's sao simples acertos que uso para melhorar a pronuncia.

Este exemplo que estou mandando é bem símples observe que eu criei um
arquivo telefones.txt em "/var/lib/asterisk/agi-bin/telefones.txt" neles eu
posso colocar vários telefones ou ramais para onde desejo ligar se algum
alarme acontecer, todos os numeros listados lá serão chamados ao mesmo
tempo, observem também que neste exemplo todos os alarmes estão sendo
colocados em arquivo temporário "/tmp/test.txt" claro você pode fazer algo
mais robusto coloque em banco se preferir, observe que ele esta criando o
.call altere o "Channel: Sip/$numero\n" para chamar sua interface E1, ou
operadora VOIP, neste exemplo ele está chamando ramais SIP's....

agora vamos ao client que irá se conectar ao server via socket !

dentro do Nagios eu configuro para que seje chamado "cliente-asterisk.pl"
observem que ele pega 3 argumentos IP de destino porta de destino e a
mensagem que será falada via TTS.

/usr/local/bin/bash -c '/usr/local/bin/perl /usr/home/eder/
cliente-asterisk.pl 192.168.55.90 1234 "Notification $NOTIFICATIONTYPE$
alert - $HOSTALIAS$ $SERVICEDESC$ is $SERVICESTATE$"'


o client é este !

use IO::Socket::INET;
use strict;
my $name = shift
    or die "Missing server name\n";
my $port = shift
    or die "Missing port number\n";

my $msg = shift
    or die "Missing port number\n";
my $socket = IO::Socket::INET->new('PeerAddr' => $name,
                                   'PeerPort' => $port,
                                   'Proto' => 'tcp')
    or die "Can't create socket ($!)\n";
print "Client sending\n";

if($socket->connected){

print $socket "$msg\n";
exit(0);
    print scalar <$socket>;
exit(0);
}
close $socket
    or die "Can't close socket ($!)\n";
exit(0);


Agora configure seu Asterisk para falar o que está dentro do arquivo
test.txt estou enviando de presente 3 métodos escolha o seu !!



[Nagios]
#exemplo com o Festival
exten => 3200,1,Set(test=${FILE(/tmp/test.txt,0,130)})
exten => 3200,n,Festival(${test})
exten => 3200,n,wait(1)
exten => 3200,n,Hangup

#exemplo com o eSpeak
exten => 3300,1,ReadFile(test=/tmp/test.txt,130)
exten => 3300,n,eSpeak(${test})
exten => 3300,n,wait(1)
exten => 3300,n,Hangup
#exemplo com o verbio
exten => 3400,1,VerbioPrompt(/tmp/test.txt,,,fv)


Neste exemplo o .call está criando a rota para a extensão 330, ou seja o
.call vai ligar para todos os números contidos em telefones.txt quando a
ligação for atendida será feita a ponte para a extensão 330 que irá ler o
conteúdo do arquivo contido em test.txt ....

Tentei ser o mais claro possível !!

Eng Eder de Souza


Em 9 de maio de 2012 09:05, Mazolini, Jose
<Jose.Mazolini em fisglobal.com>escreveu:

>  Eu uso o Dude é da Mikrotik. Todas minhas RBs, são mais de 40, twittão.
> Falta de energia, Bateria baixa, Desconexão de link Ponto a Ponto, Reset,
> Falha do Gateway principal entrando em modo contingencia, Link
> Reestabelecido,****
>
> Eu fiz uma gambiarra também.****
>
> Chamo escript que envia e-mail usando comando sendmail (para Windows).****
>
> Que envia uma mensagem para uma FanPage do Facebook(que não esta
> publicada).****
>
> A FanPage esta linkada ao Twitter.****
>
> Eu sigo no meu twitter por sms o twitter da FanPage.****
>
> Qualquer coisa que acontece recebo um SMS. FREE!!!!****
>
> A tim não cobra pra receber publicações do Twitter, só para enviar.****
>
> ** **
>
> *From:* asteriskbrasil-bounces em listas.asteriskbrasil.org [mailto:
> asteriskbrasil-bounces em listas.asteriskbrasil.org] *On Behalf Of *Dennys
> Santos Alves
> *Sent:* terça-feira, 8 de maio de 2012 17:45
> *To:* asteriskbrasil em listas.asteriskbrasil.org
> *Subject:* Re: [AsteriskBrasil] Manager Asterisk****
>
> ** **
>
> Eder tem como você me enviar este script pois existe a possibilidade de
> colocar ele para charmar através de servidor voip Avaya.****
>
>  ****
>
> Poderia me ajudar.****
>
>  ****
>
> Grato****
>
>  ****
>
>  ****
>
>  ****
>
> Em 8 de maio de 2012 14:35, Nicolau Costa <nicogen em gmail.com> escreveu:***
> *
>
> Olá Eder,
>
> Muito obrigado pela resposta. Vou tentar fazer aqui.
> Teria como vc me mandar os seus scripts para que eu possa dar uma olhada??
>
> grande abraço
>
> Nicolau Costa****
>
> Em 8 de maio de 2012 14:26, Eder Souza <eder.souza em bsd.com.br> escreveu:**
> **
>
> ** **
>
> Olá Nicolau,****
>
>  ****
>
> É possível sim, aqui eu utilizo o Nagios em um freeBSD para monitoramento
> de Links, Servidores, Temperatura, Energia, ETC. Eu construí um daemon em
> perl com socket onde deixo este server rodando na máquina Asterisk, fiz um
> client para se conectar por este socket e quando algum alarme acontece o
> client se conecta ao server enviando via socket informação por exemplo qual
> serviço está down e o válor que fez o serviço ser alarmado, no mesmo
> instante este server cria um .call e gera uma váriável temporária via
> AsteriskDB, este arquivo .call dispara a ligação que ao ser atendida pega
> os dados do banco e lê via TTS o conteúdo ex: "Pegasus HD em 90%" ou
> "Energia caiu"****
>
>  ****
>
> Você pode fazer o mesmo só nao sei se o seu software chamado Dude possue
> funcionalidades para chamar scripts externos, mas se tiver conseguirá fazer
> o mesmo em seu ambiente!****
>
>  ****
>
>  ****
>
>  ****
>
> Att,****
>
>  ****
>
>  ****
>
> Eng Eder de Souza****
>
> Em 8 de maio de 2012 13:49, Nicolau Costa <nicogen em gmail.com> escreveu:***
> *
>
> Boa tarde pessoal,
>
> Tenho um software de monitoramento chamado Dude. Se um determinado serviço
> estiver down ele dispara um e-mail e um pop-up avisando.
> Agora quero que quando aconteça isso o Asterisk ligue para um deterninado
> telefone avisando que tal serviço está down.
> Alguem já fez algo parecido??
> Utilizo o Elastix.
>
> Att
>
> Nicolau Costa****
>
> _______________________________________________
> KHOMP Inovação: External Board Series
> Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk e
> FreeSWITCH.
> Tenha a External Series Experience na sua aplicação. Visite www.khomp.com
> _______________________________________________
> DIGIVOICE  Fabricante de Placas de Voz e Channel Bank
> 20 anos de experiência com E1(R2/ISDN), FXS, FXO e GSM
> Centro Treinamento - Curso de PABX IP -  Asterisk  - Site
> www.digivoice.com.br
> ________
> YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do
> mercado.
> email: yealink em commlogik.com.br | www.commlogik.com.br | (11) 5503-1011
> ______________________________________________
> Para remover seu email desta lista, basta enviar um email em branco para
> asteriskbrasil-unsubscribe em listas.asteriskbrasil.org****
>
>
>
> _______________________________________________
> KHOMP Inovação: External Board Series
> Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk e
> FreeSWITCH.
> Tenha a External Series Experience na sua aplicação. Visite www.khomp.com
> _______________________________________________
> DIGIVOICE  Fabricante de Placas de Voz e Channel Bank
> 20 anos de experiência com E1(R2/ISDN), FXS, FXO e GSM
> Centro Treinamento - Curso de PABX IP -  Asterisk  - Site
> www.digivoice.com.br
> ________
> YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do
> mercado.
> email: yealink em commlogik.com.br | www.commlogik.com.br | (11) 5503-1011
> ______________________________________________
> Para remover seu email desta lista, basta enviar um email em branco para
> asteriskbrasil-unsubscribe em listas.asteriskbrasil.org****
>
>
>
> _______________________________________________
> KHOMP Inovação: External Board Series
> Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk e
> FreeSWITCH.
> Tenha a External Series Experience na sua aplicação. Visite www.khomp.com
> _______________________________________________
> DIGIVOICE  Fabricante de Placas de Voz e Channel Bank
> 20 anos de experiência com E1(R2/ISDN), FXS, FXO e GSM
> Centro Treinamento - Curso de PABX IP -  Asterisk  - Site
> www.digivoice.com.br
> ________
> YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do
> mercado.
> email: yealink em commlogik.com.br | www.commlogik.com.br | (11) 5503-1011
> ______________________________________________
> Para remover seu email desta lista, basta enviar um email em branco para
> asteriskbrasil-unsubscribe em listas.asteriskbrasil.org****
>
> ** **
>  _____________
> A informação contida nesta mensagem é confidencial e proprietária. Se você
> recebeu este e-mail por engano, por favor: (i) apague a mensagem e todas as
> suas cópias e anexos; (ii) não revele, distribua ou utilize a mensagem ou
> seu conteúdo de qualquer maneira; e (iii) notifique o remetente
> imediatamente. Adicionalmente, por favor esteja informado de que qualquer
> mensagem endereçada ao nosso domínio está sujeita ao arquivamento e leitura
> por outros membros da companhia, além do próprio destinatário da mensagem.
> Obrigado.
>
> The information contained in this message is proprietary and/or
> confidential. If you are not the intended recipient, please: (i) delete the
> message and all copies; (ii) do not disclose, distribute or use the message
> in any manner; and (iii) notify the sender immediately. In addition, please
> be aware that any message addressed to our domain is subject to archiving
> and review by persons other than the intended recipient. Thank you.
>
> _______________________________________________
> KHOMP Inovação: External Board Series
> Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk e
> FreeSWITCH.
> Tenha a External Series Experience na sua aplicação. Visite www.khomp.com
> _______________________________________________
> DIGIVOICE  Fabricante de Placas de Voz e Channel Bank
> 20 anos de experiência com E1(R2/ISDN), FXS, FXO e GSM
> Centro Treinamento - Curso de PABX IP -  Asterisk  - Site
> www.digivoice.com.br
> ________
> YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do
> mercado.
> email: yealink em commlogik.com.br | www.commlogik.com.br | (11) 5503-1011
> ______________________________________________
> Para remover seu email desta lista, basta enviar um email em branco para
> asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20120509/e4879822/attachment-0001.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil