<div><br>Opa nos primordios usava uma rotina feita pelo Juniou aqui da lista tem como deixar ela realtime mas eu usava estática mesmo !!</div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div>Source de exemplo usando PostgreSQL</div>
<div> </div>
<div>#include &lt;stdio.h&gt;<br>#include &lt;stdlib.h&gt;<br>#include &lt;string.h&gt;<br>#include &lt;libpq-fe.h&gt;<br>#include &lt;time.h&gt;<br><br>/*###########################################################*/<br>
/* Conversor do queue_log para PostgreSQL                    */<br>/* Data: 20-10-2006                                          */<br>/* Porto Velho - RO  [EMAIL PROTECTED]                    */<br>/*###########################################################*/<br>
<br><br>#define MAX_CAMPOS 11<br>#define DELIMITADOR &#39;|&#39;<br>char* campos[MAX_CAMPOS];<br><br>int Preencher_Campos(char *linha)<br>{<br>    char *inicio, *delimitador;<br>    int campo_atual = 0;<br>    inicio = linha;<br>
    delimitador = strchr(inicio, DELIMITADOR);<br>       while (delimitador &amp;&amp; campo_atual &lt; MAX_CAMPOS-1)<br>        {<br>          *delimitador = &#39;\0&#39;;<br>          campos[campo_atual++] = inicio;<br>
          inicio = delimitador + 1;<br>          delimitador = strchr(inicio, DELIMITADOR);<br>        }<br>    campos[campo_atual++] = inicio;<br>    return campo_atual;<br>}<br><br>/*Objeto de conexão*/<br>PGconn *conn = NULL;<br>
/*Ponteiro de resultado*/<br>PGresult *result;<br><br>int main()<br>{<br>/*realiza a conexão*/<br>conn = PQconnectdb(&quot;host=localhost user=asterisk password=asterisk<br>dbname=asterisk&quot;);<br><br>if(PQstatus(conn) == CONNECTION_OK)<br>
{<br>printf(&quot;Conexão com o banco efetuada com sucesso. &quot;);<br>}<br>else<br>{<br>printf(&quot;Falha na conexão. Erro: %s&quot;, PQerrorMessage(conn));<br>PQfinish(conn);<br>return -1;<br>}<br><br><br>//Delete lixo da tabela...<br>
           result = PQexec(conn, &quot;DELETE FROM queue_log WHERE evento =<br>&#39;CONFIGRELOAD&#39;&quot;);<br><br>           if(!result)<br>            { printf(&quot;Erro executando query.&quot;); }<br>            else<br>
             { switch(PQresultStatus(result)) <br>               {<br>                 case PGRES_EMPTY_QUERY:<br>                  printf(&quot;Nenhuma alteracao.&quot;);<br>                  break;<br>                 case PGRES_FATAL_ERROR:<br>
                  printf(&quot;Erro na query: %s &quot;,<br>PQresultErrorMessage(result));<br>                  break;<br>                 case PGRES_COMMAND_OK:<br>                  printf(&quot;%s linhas afetadas. &quot;, PQcmdTuples(result));<br>
                  break;<br>                 default:<br>                  printf(&quot;Query executada sem retorno.&quot;);<br>                  break;<br>               }<br>             }<br><br><br>FILE *arquivo;<br>char consulta[1024];<br>
char string[1024]; //string onde ficara a linha<br>int x = 0;<br>int campos_lidos;<br>char *delimitador, *inicio;<br>int aux1;<br><br>//#define DATE_FORMAT &quot;%Y-%m-%d %T&quot;<br>//time_t t;<br>//struct tm tm;<br>//char date[256];<br>
//time(&amp;t);<br>//localtime_r(&amp;t, &amp;tm);<br>//strftime(date, sizeof(date), DATE_FORMAT, &amp;tm);<br><br>arquivo = fopen(&quot;/var/log/asterisk/queue_log&quot;, &quot;rt&quot;);<br>while (! feof(arquivo))  <br>
{<br>while(fgets(string, sizeof(string), arquivo)) //le arquivo<br>   {  <br>     delimitador = strchr(string, &#39;\n&#39;);<br>      while (delimitador)<br>        {<br>            *delimitador = &#39;\0&#39;;<br>             printf(&quot;\n\n\nLinha: %s\n\n&quot;, string);<br>
             campos_lidos = Preencher_Campos(string);<br>             //printf(&quot;Campos LIDOS: %d\n Data: %s &quot;, campos_lidos, date);<br>             printf(&quot;Campos LIDOS: %d\n &quot;, campos_lidos);<br>             int i;<br>
             for (i=0; i&lt;campos_lidos-1; i++)<br>             printf(&quot;Campo %2i: %s\n&quot;, i, campos[i]);<br>           //getchar();<br>            strcpy(consulta,&quot;&quot;);<br>           strcat(consulta,&quot;INSERT INTO queue_log  values (&#39;&quot;);<br>
           for (i=0; i&lt; campos_lidos-1; i++)<br>            {<br>               strcat(consulta,campos[i]);<br>               strcat(consulta, &quot;&#39;,&#39;&quot;);<br>               aux1 = i+1;      <br>            }<br>
            strcat(consulta,campos[aux1]);<br>            strcat(consulta, &quot;&#39;)&quot;);<br>          result = PQexec(conn, consulta);<br>           if(!result)<br>            { printf(&quot;Erro executando query.&quot;); }<br>
            else<br>             { switch(PQresultStatus(result)) <br>               {<br>                 case PGRES_EMPTY_QUERY:<br>                  printf(&quot;Nenhuma alteracao.&quot;);<br>                  break;<br>
                 case PGRES_FATAL_ERROR:<br>                  printf(&quot;Erro na query: %s &quot;,<br>PQresultErrorMessage(result));<br>                  break;<br>                 case PGRES_COMMAND_OK:<br>                  printf(&quot;%s linhas afetadas. &quot;, PQcmdTuples(result));<br>
                  break;<br>                 default:<br>                  printf(&quot;Query executada sem retorno.&quot;);<br>                  break;<br>               }<br>           inicio = delimitador + 1;<br>           delimitador = strchr(inicio, &#39;\n&#39;);<br>
        }<br>    x = x+1;<br>   }<br>}<br>fclose(arquivo); //fecha arquivo<br>/*Libera objeto da query*/<br>PQclear(result);<br>}<br>/*Verifica se a conexão está aberta e a encerra*/<br>if(conn != NULL)<br>PQfinish(conn);<br>
}<br></div>
<div> </div>
<div> </div>
<div>Da para aprimorar isso !!!</div>
<div> </div>
<div>Agora tem uma maneira mais simples ainda de se fazer isso com o stdin de qualquer programa veja um exemplo simples !!</div>
<div> </div>
<div>import sys<br>retorna_valores = sys.stdin.readline().split(&#39;,&#39;)<br>print retorna_valores</div>
<div> </div>
<div>se vc rodar isso em conjunto com um tail -f vai conseguir pegar todas as informações em tempo real conforme forem entrando no log, veja exemplo bobo!!<br></div>
<div> </div>
<div>tail -f /var/log/asterisk/queue_log | python teste.py</div>
<div> </div>
<div> </div>
<div>só escrever a rodina de insert para o banco no seu programa e pronto!!</div>
<div> </div>
<div>[]&#39;s</div>
<div> </div>
<div> </div>
<div>Eng Eder de Souza</div>
<div> </div>
<div> </div>
<div><br> </div>
<div class="gmail_quote">Em 9 de agosto de 2010 14:00, Sidnei - IG <span dir="ltr">&lt;<a href="mailto:sidnei_rp@ig.com.br">sidnei_rp@ig.com.br</a>&gt;</span> escreveu:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div lang="PT-BR" vlink="purple" link="blue">
<div>
<p class="MsoNormal">Pessoal.</p>
<p class="MsoNormal">Alguém sabe como faço para inserir os dados do queue_log (/var/log/asterisk/queue_log) no BD Mysql em tempo real???</p>
<p class="MsoNormal">Uso asterisk 1.2.24 (Meucci).</p>
<p class="MsoNormal"> </p></div></div><br>_______________________________________________<br>KHOMP: qualidade em placas de E1, GSM, FXS e FXO para Asterisk.<br>- Hardware com alta disponibilidade de recursos e qualidade KHOMP<br>
- Suporte técnico local qualificado e gratuito<br>Conheça a linha completa de produtos KHOMP em <a href="http://www.khomp.com.br/" target="_blank">www.khomp.com.br</a><br>_______________________________________________<br>
Temos tudo para seu projeto VoIP com Asterisk!<br>Descontos especiais para assinantes da AsteriskBrasil.org.<br>Registre-se e receba um cupom exclusivo de desconto!<br>Acesse agora <a href="http://www.voipmania.com.br/" target="_blank">www.voipmania.com.br</a><br>
______________________________________________<br>Lista de discussões AsteriskBrasil.org<br><a href="mailto:AsteriskBrasil@listas.asteriskbrasil.org">AsteriskBrasil@listas.asteriskbrasil.org</a><br><a href="http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil" target="_blank">http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil</a><br>
</blockquote></div><br>