<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 <stdio.h><br>#include <stdlib.h><br>#include <string.h><br>#include <libpq-fe.h><br>#include <time.h><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 '|'<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 && campo_atual < MAX_CAMPOS-1)<br> {<br> *delimitador = '\0';<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("host=localhost user=asterisk password=asterisk<br>dbname=asterisk");<br><br>if(PQstatus(conn) == CONNECTION_OK)<br>
{<br>printf("Conexão com o banco efetuada com sucesso. ");<br>}<br>else<br>{<br>printf("Falha na conexão. Erro: %s", PQerrorMessage(conn));<br>PQfinish(conn);<br>return -1;<br>}<br><br><br>//Delete lixo da tabela...<br>
result = PQexec(conn, "DELETE FROM queue_log WHERE evento =<br>'CONFIGRELOAD'");<br><br> if(!result)<br> { printf("Erro executando query."); }<br> else<br>
{ switch(PQresultStatus(result)) <br> {<br> case PGRES_EMPTY_QUERY:<br> printf("Nenhuma alteracao.");<br> break;<br> case PGRES_FATAL_ERROR:<br>
printf("Erro na query: %s ",<br>PQresultErrorMessage(result));<br> break;<br> case PGRES_COMMAND_OK:<br> printf("%s linhas afetadas. ", PQcmdTuples(result));<br>
break;<br> default:<br> printf("Query executada sem retorno.");<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 "%Y-%m-%d %T"<br>//time_t t;<br>//struct tm tm;<br>//char date[256];<br>
//time(&t);<br>//localtime_r(&t, &tm);<br>//strftime(date, sizeof(date), DATE_FORMAT, &tm);<br><br>arquivo = fopen("/var/log/asterisk/queue_log", "rt");<br>while (! feof(arquivo)) <br>
{<br>while(fgets(string, sizeof(string), arquivo)) //le arquivo<br> { <br> delimitador = strchr(string, '\n');<br> while (delimitador)<br> {<br> *delimitador = '\0';<br> printf("\n\n\nLinha: %s\n\n", string);<br>
campos_lidos = Preencher_Campos(string);<br> //printf("Campos LIDOS: %d\n Data: %s ", campos_lidos, date);<br> printf("Campos LIDOS: %d\n ", campos_lidos);<br> int i;<br>
for (i=0; i<campos_lidos-1; i++)<br> printf("Campo %2i: %s\n", i, campos[i]);<br> //getchar();<br> strcpy(consulta,"");<br> strcat(consulta,"INSERT INTO queue_log values ('");<br>
for (i=0; i< campos_lidos-1; i++)<br> {<br> strcat(consulta,campos[i]);<br> strcat(consulta, "','");<br> aux1 = i+1; <br> }<br>
strcat(consulta,campos[aux1]);<br> strcat(consulta, "')");<br> result = PQexec(conn, consulta);<br> if(!result)<br> { printf("Erro executando query."); }<br>
else<br> { switch(PQresultStatus(result)) <br> {<br> case PGRES_EMPTY_QUERY:<br> printf("Nenhuma alteracao.");<br> break;<br>
case PGRES_FATAL_ERROR:<br> printf("Erro na query: %s ",<br>PQresultErrorMessage(result));<br> break;<br> case PGRES_COMMAND_OK:<br> printf("%s linhas afetadas. ", PQcmdTuples(result));<br>
break;<br> default:<br> printf("Query executada sem retorno.");<br> break;<br> }<br> inicio = delimitador + 1;<br> delimitador = strchr(inicio, '\n');<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(',')<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>[]'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"><<a href="mailto:sidnei_rp@ig.com.br">sidnei_rp@ig.com.br</a>></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>