[AsteriskBrasil] Passar uma variável do PHP para shell script

Paulino Kenji Sato pksato em gmail.com
Quinta Junho 14 14:49:39 BRT 2012


Ola,

2012/6/14 Maisvoipshop Telecom <contato em maisvoipshop.com.br>:
> Pessoal, to tentando rodar o comando originate nao shell, chamando ele pelo
> php, porém nao to conseguindo enviar as variaveis do php para p shell,
> alguem pode dar uma luz. segue o exemplo de como to fazendo, porem ainda sem
> exito. pois as variaveis nao passam para o shell.
>
> arquivo disca.sh
>
> #!/bin/bash
>
> asterisk -rx "originate SIP/$origem/$destino extension $channel@$contexto"
>
>
> arquivo disca.php
>
> <?php
>
> $destino=3194172272;
> $origem=5366275943;
> $channel=83522;
> $contexto='contexto';
>
> system('/disca.sh \"$destino\" \"$origem\" \"$channel\" \"$contexto\"');
>
> ?>

Primeiramente a bronca: NÃO use system() ou exec() para realizar esse
tipo de tarefa.
Em vez disso, use o popen(), ta certo que da mais trabalho, mas e a
forma correta de fazer.

if (popen("asterisk -rx originate SIP/$origem/$destino extension
$channel@$contexto",r)){
  echo "chamada em andamento")
} else {
  echo "chamada não realizada");
};
pclose();

Mas, isso não e a mesma coisa que usar um callfile?

$fd=fopen("/var/spool/asterisk/outgoing/call_$tempfile.tmp",w)
fwrite($fd,
   Channel: SIP/$origem/$destino
   Context: contexto
   Extension: $channel
);
fclose();
rename("/var/spool/asterisk/outgoing/call_$tempfile.tmp","/var/spool/asterisk/outgoing/call_$tempfile.call");

Possivelmente os parâmetros do callfile estão errados, adaptei  da
linha de comando do orginate.

Ah sim, e o objetivo não e passar as variáveis para a shell, e sim os
parâmetros de linha de comando.

Na shell script deveria ser:

asterisk -rx "$2/$1 extension $3l@$4"



Paulino


Mais detalhes sobre a lista de discussão AsteriskBrasil