Pessoal, este script que pega o status Do asterisk (1.2.13) relacionado a filas, agentes e canais e joga em tabelas em um banco postgre. Pra quem quiser usar. Depois é só fazer uma tela "for Windows" dando refresh nas tabelas para supervisão. Att: Jr.
#!/bin/sh # Data: 22/05/2007 # Captura DADOS do asterisk e envia para DB # [EMAIL PROTECTED] # [EMAIL PROTECTED] #Inicializa LOOP infinito ZZZ=XXX AAA=UUU while [ "$ZZZ" != "$AAA" ]; do # Limpa Tabelas temporarias psql -c "delete from motor_dac where dac <> 'X9X'" asterisk; psql -c "delete from motor_agente_livrea where codigo <> 'X9X' " asterisk; psql -c "delete from motor_agente_ocupa where codigo <> 'X9X' " asterisk; psql -c "delete from motor_agente_pausa where codigo <> 'X9X' " asterisk; #psql -c "delete from motor_agentes where codigo <> 'X9X' " asterisk; psql -c "delete from motor_canais where canal <> 'X9X' " asterisk; #Inicializa variaveis DAC="nonono" CODAGENTE="nonono" CADASTRA TODOS OS AGENTES BUFFERA=`asterisk -rx "show agents" |grep '(' |awk '{ print $0}'` CONTA=1 FIM=`echo "$BUFFERA" |awk '{ print $1}'|tail -n1` while [ "$CODAGENTE" != "$FIM" ]; do CODAGENTE=`echo "$BUFFERA" |awk '{ print $1}' |head -n$CONTA |tail -n1` NOME=`echo "$BUFFERA" |awk '{ print $2}' |head -n$CONTA |tail -n1` CONTA=$(($CONTA+1)); psql -c "insert into motor_agentes(CODIGO,NOME) values('$CODAGENTE','$NOME')" asterisk; done CANAL="XXXX" # CANAIS ATIVOS BUFFERF=`asterisk -rx "show channels verbose" ` CONTF=1 FIMF=`echo "$BUFFERF" | awk '{ print $1}'|tail -n1` while [ "$CANAL" != "$FIMF" ]; do CANAL=`echo "$BUFFERF" | awk '{ print $1}' |head -n$CONTF |tail -n1` CONTEXTO=`echo "$BUFFERF" | awk '{ print $2}' |head -n$CONTF |tail -n1` APP=`echo "$BUFFERF" | awk '{ print $6}' |head -n$CONTF |tail -n1` DADO=`echo "$BUFFERF" | awk '{ print $7}' |head -n$CONTF |tail -n1` CALLERID=`echo "$BUFFERF" | awk '{ print $8}' |head -n$CONTF |tail -n1` DURACAO=`echo "$BUFFERF" | awk '{ print $9}' |head -n$CONTF |tail -n1` CONTF=$(($CONTF+1)); psql -c "insert into motor_canais(CANAL,CONTEXTO,APP,DADO,CALLERID,DURACAO) values('$CANAL','$CONTEXTO','$APP','$DADO','$CALLERID','$DURACAO')" asterisk; done CODAGENTE="XXXX" # Cadastro dos DACs BUFFER=`asterisk -rx "show queues" |grep strategy |awk '{ print $0}'` CONT=1 FIM=`echo "$BUFFER" | grep strategy |awk '{ print $1}' |tail -n1` while [ "$DAC" != "$FIM" ]; do DAC=`echo "$BUFFER" | grep strategy |awk '{ print $1}' |head -n$CONT |tail -n1` CHE=`echo "$BUFFER" | grep strategy |awk '{ print $3}' |head -n$CONT |tail -n1` TME=`echo "$BUFFER" | grep strategy |awk '{ print $10}' |head -n$CONT |tail -n1` CHR=`echo "$BUFFER" | grep strategy |awk '{ print $13}' |head -n$CONT |tail -n1` CHA=`echo "$BUFFER" | grep strategy |awk '{ print $14}' |head -n$CONT |tail -n1` SLV=`echo "$BUFFER" | grep strategy |awk '{ print $15}' |head -n$CONT |tail -n1` NSR=`echo "$BUFFER" | grep strategy |awk '{ print $17}' |head -n$CONT |tail -n1` CONT=$(($CONT+1)); psql -c "insert into motor_dac(DAC,CHE,TME,CHR,CHA,SLV,NSR) values('$DAC','$CHE','$TME','$CHR','$CHA','$SLV','$NSR')" asterisk; # AGENTE LIVRE POR DAC BUFFERA=`asterisk -rx "show queue $DAC" |grep 'Not in use' |awk '{ print $0}'` CONTA=1 FIMA=`echo "$BUFFERA" | grep 'Not in use' |awk '{ print $1}'|tail -n1` while [ "$CODAGENTE" != "$FIMA" ]; do CODAGENTE=`echo "$BUFFERA" | grep 'Not in use' |awk '{ print $1}' |head -n$CONTA |tail -n1` NOME=`echo "$BUFFERA" | grep 'Not in use' |awk '{ print $2}' |head -n$CONTA |tail -n1` QTD_CH=`echo "$BUFFERA" | grep 'Not in use' |awk '{ print $7}' |head -n$CONTA |tail -n1` TEMPO=`echo "$BUFFERA" | grep 'Not in use' |awk '{ print $11}' |head -n$CONTA |tail -n1` CONTA=$(($CONTA+1)); psql -c "insert into motor_agente_livrea(CODIGO,NOME,QTD_CH,TEMPO,DAC) values('$CODAGENTE','$NOME','$QTD_CH','$TEMPO','$DAC')" asterisk; done CODAGENTE="nonononon" # AGENTE EM PAUSA POR DAC BUFFERE=`asterisk -rx "show queue $DAC" |grep 'paused' |awk '{ print $0}'` CONTE=1 FIME=`echo "$BUFFERE" | grep 'paused' |awk '{ print $1}'|tail -n1` while [ "$CODAGENTE" != "$FIME" ]; do CODAGENTE=`echo "$BUFFERE" | grep 'paused' |awk '{ print $1}' |head -n$CONTE |tail -n1` NOME=`echo "$BUFFERE" | grep 'paused' |awk '{ print $2}' |head -n$CONTE |tail -n1` QTD_CH=`echo "$BUFFERE" | grep 'paused' |awk '{ print $8}' |head -n$CONTE |tail -n1` TEMPO=`echo "$BUFFERE" | grep 'paused' |awk '{ print $12}' |head -n$CONTE |tail -n1` CONTE=$(($CONTE+1)); psql -c "insert into motor_agente_pausa(CODIGO,NOME,QTD_CH,TEMPO,DAC) values('$CODAGENTE','$NOME','$QTD_CH','$TEMPO','$DAC')" asterisk; done CODAGENTE="nonononon" # AGENTE OCUPADO POR DAC BUFFERD=`asterisk -rx "show queue $DAC" |grep 'Busy' |awk '{ print $0}'` CONTD=1 FIMD=`echo "$BUFFERD" | grep 'Busy' |awk '{ print $1}'|tail -n1` while [ "$CODAGENTE" != "$FIMD" ]; do CODAGENTE=`echo "$BUFFERD" | grep 'Busy' |awk '{ print $1}' |head -n$CONTA |tail -n1` NOME=`echo "$BUFFERD" | grep 'Busy' |awk '{ print $2}' |head -n$CONTA |tail -n1` CONTD=$(($CONTD+1)); psql -c "insert into motor_agente_ocupa(CODIGO,NOME,DAC) values('$CODAGENTE','$NOME','$DAC')" asterisk; done done echo "Aguardando intervalo de 5s" sleep 5 echo "OK!" done # Fim done loop ---------------------------------------- Estação VoIP 2006 5 e 6 Dezembro Curitiba PR http://www.estacaovoip.com.br _______________________________________________ LIsta de discussões AsteriskBrasil.org AsteriskBrasil@listas.asteriskbrasil.org http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil _______________________________________________ Acesse o wiki AsteriskBrasil.org: http://www.asteriskbrasil.org