[AsteriskBrasil] RES: Res: funo fsockopen() para se conectar a CLI?

Vandeir Aniceto Pinheiro - PresTI vandeir em presti.com.br
Segunda Julho 20 10:42:29 BRT 2009


Rodrigo 

 

Faz um teste ai coloca a seguinte linha no inicio do seu arquivo 

 

set_time_limit(0); // tira a limitação do tempo de execução do php

 

 

 

Vandeir Aniceto Pinheiro

Tecnologia da Informação

  _____  

De: asteriskbrasil-bounces em listas.asteriskbrasil.org [mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] Em nome de Carlos Eduardo
Enviada em: segunda-feira, 20 de julho de 2009 10:09
Para: asteriskbrasil em listas.asteriskbrasil.org
Assunto: [AsteriskBrasil] Res: função fsockopen() para se conectar a CLI?

 

Bom dia a todos.

 

Rodrigo Obrigado pela ajuda, mas ainda não funcionou, como eu disse anteriormente quando uso o while é como se entrrasse me um loop "infinito", segue o erro:

 

Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/asterisk/teste_retorno_cli.php on line 34

 

segue a linha:

 

while(!$versionok){

 

segue uma parte do codigo:

 

fputs ($socket, "Action: command\r\n");
fputs ($socket, "Command: core show version\r\n\r\n");
while(!$versionok){
  $version .= fread($socket,8192);
  if(strpos($version, "Asterisk")){
 $pos = strpos($version, "Asterisk");
  $version = substr($version, $pos);
  $pos_end = strpos($version, "\n");
  $version = substr($version, 0, $pos_end);
  $versionok = 1;

 

 

  _____  

De: Rodrigo Vian <listas em porttaltecnologia.com.br>
Para: asteriskbrasil em listas.asteriskbrasil.org
Enviadas: Sexta-feira, 17 de Julho de 2009 17:45:12
Assunto: Re: [AsteriskBrasil] função fsockopen() para se conectar a CLI‏

Segue um exemplo:

$errno=0 ;
$errstr=0 ;

$server="localhost";
$port=5038;
$username="usuario";
$password="senha";

$socket = fsockopen ($server, $port, $errno, $errstr, 20);
if (!$socket) {
        echo "Nao foi possivel connect no servidor Asterisk. Cheque se Asterisk manager esta ativo - /etc/asterisk/manager.conf\r\n";
        exit();
} else {
        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){
        $log .= fread($socket,8192);
        if(strpos($log, "Message: Authentication failed")){
                echo "Nao foi possivel connect no servidor Asterisk. Cheque se Asterisk manager esta ativo - /etc/asterisk/manager.conf\r\n";
                exit();
        }
        if(strpos($log, "Message: Authentication accepted")){
                break 1;
        }


fputs ($socket, "Action: command\r\n");
fputs ($socket, "Command: core show version\r\n\r\n");
while(!$versionok){
        $version .= fread($socket,8192);
        if(strpos($version, "Asterisk")){
                $pos = strpos($version, "Asterisk");
                $version = substr($version, $pos);
                $pos_end = strpos($version, "\n");
                $version = substr($version, 0, $pos_end);
                $versionok = 1;
        }
}

Qualquer clica aqui pra te ajudar:
http://www.voip-info.org/wiki/view/Asterisk+manager+Example:+PHP

Espero ter ajudado...

Abraços

Carlos Eduardo escreveu: 

Boa tarde a todos da Lista
 
Sou novato com PHP, estou tentando me conectar a CLI e executar o comando database show e escrever o resultado na pagina web,
Estou usando a seguinte função em uma pagina php:
 
$socket = fsockopen("192.168.0.215","1234");
 fputs($socket, "Action: Login\r\n");
 fputs($socket, "UserName: user\r\n");
 fputs($socket, "Secret: senha\r\n\r\n");
 fputs($socket, "Action: Command\r\n");
 fputs($socket, "Command: database show\r\n\r\n");
 
porem na hora de escrever o resultado se eu uso o while entra em um loop 'infinito'
 
while (!feof($socket)) { 
  echo fgets($socket, 128); 
  } 
 
consegui escrever porem dessa forma:

fgets($socket,128);
 $resp01 = fread($socket, 8192);
  $resp01 = fread($socket, 8192);
  $resp01 = fread($socket, 8192);
  $resp01 = fread($socket, 8192);
         echo ($resp01)."<br><br>"; // essa linha é a que me interessa, só que para eu conseguir escreverr tenho que quebra-lá o problema é que não sei o tamanho da matriz
   $respo = split(" :",$resp01);
         echo $respo[0] .  "<br>";
         echo $respo[1] .  "<br>";
         echo $respo[2] .  "<br>";
         echo $respo[3] .  "<br>";
  $resp01 = fread($socket, 8192);
  
 fclose($socket);
 
 
o que eu preciso é escrever na tela os ramais que estão registrados,
 
Desde já obrigado pela força.

 

  _____  

Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 10 <http://br.rd.yahoo.com/mail/taglines/mail/*http:/br.maisbuscados.yahoo.com/>  - Celebridades <http://br.rd.yahoo.com/mail/taglines/mail/*http:/br.maisbuscados.yahoo.com/celebridades/>  - Música <http://br.rd.yahoo.com/mail/taglines/mail/*http:/br.maisbuscados.yahoo.com/m%C3%BAsica/>  - Esportes <http://br.rd.yahoo.com/mail/taglines/mail/*http:/br.maisbuscados.yahoo.com/esportes/>  






  _____  



 
_______________________________________________
Openmoko Freerunner, primeiro telefone open source, disponível no Brasil rodando o Android da Google.
http://www.neodroid.com <http://www.neodroid.com/> 
 
Compre uma camiseta da AsteriskBrasil.org!
http://www.voipmania.com.br <http://www.voipmania.com.br/> 
 
Acesse o canal IRC de discussão sobre Asterisk em Português Brasileiro na rede Freenode.net: #asterisk-br
_______________________________________________
Lista de discussões AsteriskBrasil.org
AsteriskBrasil em listas.asteriskbrasil.org
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil


Rodrigo S. Vian
Analista TI
Porttal Tecnologia
Soluções em TI & Telecom
http://www.porttaltecnologia.com.br
phone:55+19+3542-9667
mobile:55+19+7808-5121
nextel:55*89*25546

|-- Antes de Imprimir, pense em sua responsabilidade com o Meio Ambiente --|

 

  _____  

Veja quais são os assuntos do momento no Yahoo! + Buscados: Top <http://br.rd.yahoo.com/mail/taglines/mail/*http:/br.maisbuscados.yahoo.com/>  10 - Celebridades <http://br.rd.yahoo.com/mail/taglines/mail/*http:/br.maisbuscados.yahoo.com/celebridades/>  - Música <http://br.rd.yahoo.com/mail/taglines/mail/*http:/br.maisbuscados.yahoo.com/m%C3%BAsica/>  - Esportes <http://br.rd.yahoo.com/mail/taglines/mail/*http:/br.maisbuscados.yahoo.com/esportes/> 

-------------- Prxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20090720/58af8643/attachment-0001.htm 


Mais detalhes sobre a lista de discusso AsteriskBrasil