[AsteriskBrasil] zabbix com asterisk

Rodrigo Vian (listas) listas em porttaltecnologia.com.br
Sexta Maio 27 12:01:44 BRT 2011


Eu faria um script para se conectar ao manager do asterisk.....

no manager do asterisk configuraria um novo usuário onde este apenas 
poderia receber conexão do ip do zabbix... e também, caso tenha 
firewall, liberar a porta 5038 apenas para o ip do zabbix...

Creio que seria mais seguro dessa forma....

De brinde um script para originar ligações.... adapte à sua necessidade....

Abraços!!!

Firewall Iptables
iptables -A INPUT -i eth0 -s 192.168.0.1/32 -p tcp -m tcp --dport 5038 
-m state --state NEW -j ACCEPT

explicando: tudo o que vier na interface eth0 (rede local) e for de 
origem do ip 192.168.0.1 (ip zabbix) sendo o protocolo tcp na porta 5038 
com estado novo, ACEITE.


======================= manager.conf =======================
[zabbix]
secret=suasenha
deny=0.0.0.0/0.0.0.0
permit=192.168.0.1/255.255.255.0 ; ip do zabbix
read = system,call,log,verbose,command
write = system,call,log,verbose,command,originate

===================== fim manager.conf =====================

======================= RemoteDialer.php =======================
#!/usr/bin/env php

# INFO
# http://www.voip-info.org/wiki/view/Asterisk+manager+API
# http://www.voip-info.org/wiki/view/Asterisk+manager+Examples
# http://www.voip-info.org/wiki/view/Asterisk+manager+Example%3A+Originate
# http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+Originate


<?php
set_time_limit(30); //define o tempo limite de execução em 30 segundos. 
Aumentar se utilizar tentativas de discagem
error_reporting(1);

$errno=0 ;
$errstr=0 ;
$delay = 1;

$server="localhost"; // ip do servidor asterisk
$port=5038; // porta de acesso padrão
$username="discador" // usuário do manager
$password="12345678";  // senha do usuário do manager


$tecnologia="Local"; // Padrão: Local
$ramal="1000";  // Usa-se ramal ip ou o DDR do PABX conectado
$dialnumber="0151122223333"; // número a ser discado

$socket = fsockopen ($server, $port, $errno, $errstr, 20); // Tenta 
abrir o socket asterisk

if (!$socket) {
        echo "Não foi possível conectar no servidor Asterisk. Contate o 
Administrador de Telecom.\r\n";
        exit();
} else {
    // faz login no servidor
        stream_set_blocking($socket, 0);
        fputs ($socket, "Action: login\r\n");
        fputs ($socket, "Username: {$username}\r\n");
        fputs ($socket, "Secret: {$password}\r\n");
        fputs ($socket, "Events: off\r\n\r\n");
}

while(1){
    // Checa se usuário e senha é valido
        $log .= fread($socket,8192);
        if(strpos($log, "Message: Authentication failed")){
                echo "Não foi possível fazer Login no servidor 
Asterisk.  Contate o Administrador de Telecom.\r\n";
                exit();
        }
        if(strpos($log, "Message: Authentication accepted")){
                break 1;
        }
}

// Inicia o processo de discagem
fputs ($socket, "Action: Originate\r\n");
fputs ($socket, "Channel: {$tecnologia}/{$ramal}@from-internal\r\n"); // 
Parâmetro Channel é chamado primeiro
fputs ($socket, "Exten: {$dialnumber}\r\n"); // Parâmetro Exten é 
chamado depois
fputs ($socket, "Context: from-internal\r\n");
fputs ($socket, "Priority: 1 \r\n");
fputs ($socket, "Timeout: 10000\r\n"); //padrão 30000 ms ou 30 s
fputs ($socket, "Account: remote_call\r\n");
fputs ($socket, "Async: yes\r\n");
// Opcional
//fputs ($ socket, "MaxRetries: 2\r\n"); // Número máximo de tentativas
//fputs ($ socket, "RetryTime: 30\r\n"); // Tempo para retentar, em segundos
//fputs ($ socket, "WaitTime: 10\r\n");  // Tempo de espera em segundos 
entre tentativas

sleep(2); // Importante para realizar a execução da chamada (2 segundos)

fputs($socket, "Action: Logoff\r\n\r\n"); // Faz logoff do servidor
fclose($socket); // Fecha a conexão

exit();
?>
===================== Fim RemoteDialer.php =====================



Wagner escreveu:
>
> Desculpe agora que vi que o usuario q vc usa no servidor asterisk eh o 
> asterisk entao o arquivo auhorized_keys tem q ficar dentro da pasta 
> .ssh dentro da home do usuario asterisk
>
> Ai do servidor zabbix digite ssh asterisk em ip "console.... "
>
> Deve funcionar
>
> Qualquer duvida avisa
> Abs
>
>> On May 27, 2011 11:21 AM, "Wagner" <wagnerspi em gmail.com 
>> <mailto:wagnerspi em gmail.com>> wrote:
>>
>> para não precisar de senha é bem simples,
>>  
>> você no servidor de origem, deve criar as chaves de ssh pro usuário 
>> do zabbix ou root, depende como o seu está rodando:
>>  
>> # ssh-keygen
>>  
>> ele criará as chaves dentro de /home/usuario/.ssh/
>>  
>> existirá duas chaves, uma .pub
>>  
>> digite cat id_rsa.pub para ver o conteudo
>>  
>> crie um arquivo na pasta do usuário do servidor destino, 
>> provavelmente root
>>  
>> touch /root/.ssh/authorized_keys
>>  
>> e dentro desse arquivo copie o conteudo do id_rsa.pub do servidor origem.
>>  
>> pronto, tente acessar :)
>>  
>> para fazer isso em outros servidores, é só adicionar outras chaves no 
>> authorized_keys, sempre 1 por linha
>>  
>> Abraço
>>  
>>
>>
>>  
>> Em 27 de maio de 2011 11:13, Gilcerio Maduro 
>> <gilcerio.maduro em gmail.com <mailto:gilcerio.maduro em gmail.com>> escreveu:
>>
>>
>> >
>> > Bem interessante essa sua ideia, estava pensando em fazer isso 
>> usando mensagem sms
>> >
>> > Em 27 de...
>>
>>
> ------------------------------------------------------------------------
>
> _______________________________________________
> KHOMP: qualidade em placas de E1, GSM, FXS e FXO para Asterisk. 
> - Hardware com alta disponibilidade de recursos e qualidade KHOMP
> - Suporte técnico local qualificado e gratuito 
> Conheça a linha completa de produtos KHOMP em www.khomp.com.br
> _______________________________________________
> DIGIVOICE: Lider no mercado de placas para Asterisk
> Único fabricante com Centro de Treinamento especializado.
> LANÇAMENTO: Channel Bank TDMoE, até 64 canais FXS / FXO. 
> www.digivoice.com.br ou (11)3016-5200.
> ________
> Lista de discussões AsteriskBrasil.org
> AsteriskBrasil em listas.asteriskbrasil.org
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
> ______________________________________________
> 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/20110527/9c116a7d/attachment-0001.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil