[AsteriskBrasil] Res: função fsockopen() para se conectar a CLI
Carlos Eduardo
carlossabbatini em yahoo.com.br
Segunda Julho 20 10:08:37 BRT 2009
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 - Celebridades - Música - Esportes
>
________________________________
>_______________________________________________
>Openmoko Freerunner, primeiro telefone open source, disponÃvel no Brasil rodando o Android da Google.
>http://www.neodroid.com
>
>Compre uma camiseta da AsteriskBrasil.org!
>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
http://br.maisbuscados.yahoo.com
-------------- Prxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20090720/0292db3e/attachment-0001.htm
Mais detalhes sobre a lista de discusso AsteriskBrasil