#!/bin/bash # # queue_log.sh - Faz "upload" do arquivo /var/log/asterisk/queue_log # para o banco de dados # # Autor : Alan Pablo # Autor : Contacte Gestao e Relacionamento # Local : Porto Velho - RO 04/10/2008 # # -------------------------------------------------------------------- # Este programa busca por todas as informacoes armazenadas no arquivo # /var/log/asterisk/queue_log formata e insere na tabela queue_log # em um banco de dados Postgresql. # # -------------------------------------------------------------------- # # Versão 1.0, Alan Pablo , 2008-10-04 , Porto Velho - RO # Versão 1.1, Alan Pablo , 2010-04-19 , Cuiabá - MT # - Adicionado tratamento para verificar se o script já está em execução,para evitar que seja rodado 2 ao mesmo tempo # - Adicionado o caminho para o arquivo bdcallcenter onde ficam as variaveis de acesso ao banco de dados #Verifica se o script está rodando if [ -e /tmp/queue_log.pid ] ; then date +%d-%m-%Y-%H:%M:%S >> /var/log/queue_log.log echo "Queue_log já está em execução" >> /var/log/queue_log.log exit fi #Gera PID do scritp echo $$ > /tmp/queue_log.pid #Configurações para acesso a base de dados . /var/lib/asterisk/scripts/callcenter/bd TABELA=ast_eventos_dacs #Diretorio para logs if ! [ -d /var/log/scripts ] ; then echo "Criando ---> /var/log/scripts" mkdir -p /var/log/scripts fi #Apagando /var/log/asterisk/queue_log.old caso exista if [ -e /var/log/asterisk/queue_log.old ] ; then echo "Apagando /var/log/asterisk/queue_log.old" rm /var/log/asterisk/queue_log.old fi #Renomea o arquivo,gera um novo e renova os logs do asterisk mv /var/log/asterisk/queue_log /var/log/asterisk/queue_log.old touch /var/log/asterisk/queue_log chown --recursive pbx:pbx /var/log/asterisk/queue_log chmod --recursive u=rwX,g=rX,o= /var/log/asterisk/queue_log asterisk -rx "logger reload" #Cria uma copia de seguranca do arquivo,enquanto o programa passa #por fase de avaliacao cat /var/log/asterisk/queue_log.old >> /var/log/asterisk/queue_log.original export PGPASSWORD=$SENHA cat /var/log/asterisk/queue_log.old | while read LINHA; do #Separando as informacoes em variaveis UID1=$(echo "$LINHA" | cut -d "|" -f1) UID2=$(echo "$LINHA" | cut -d "|" -f2) FILA=$(echo "$LINHA" | cut -d "|" -f3) AGENTE=$(echo "$LINHA" | cut -d "|" -f4) EVENTO=$(echo "$LINHA" | cut -d "|" -f5) PARAM1=$(echo "$LINHA" | cut -d "|" -f6) PARAM2=$(echo "$LINHA" | cut -d "|" -f7) PARAM3=$(echo "$LINHA" | cut -d "|" -f8) PARAM4=$(echo "$LINHA" | cut -d "|" -f9) #Inserindo na base dados case $EVENTO in "TRANSFER" ) psql -c "insert into $TABELA (uid1,uid2,fila,agente,evento,param1,param2,param3,param4) values ('$UID1','$UID2','$FILA','$AGENTE','$EVENTO','$PARAM3','$PARAM2','$PARAM3','$PARAM4') " -h $HOST_DB -d $BASE_DB -U $USUARIO ;; "CHAMANDO"|"COMPLETACALLER"|"COMPLETAAGENT"|"COMPLETEAGENTRAMAL"|"COMPLETECALLERRAMAL"|"BUSYS"|"NOANSWERS" ) PARAM1=$(echo "$LINHA" | cut -d "|" -f6 | cut -d "," -f1) PARAM2=$(echo "$LINHA" | cut -d "|" -f6 | cut -d "," -f2) PARAM3=$(echo "$LINHA" | cut -d "|" -f6 | cut -d "," -f3) PARAM4=$(echo "$LINHA" | cut -d "|" -f6 | cut -d "," -f4) psql -c "insert into $TABELA (uid1,uid2,fila,agente,evento,param1,param2,param3,param4) values ('$UID1','$UID2','$FILA','$AGENTE','$EVENTO','$PARAM1','$PARAM2','$PARAM3','$PARAM4') " -h $HOST_DB -d $BASE_DB -U $USUARIO ;; *) psql -c "insert into $TABELA (uid1,uid2,fila,agente,evento,param1,param2,param3,param4) values ('$UID1','$UID2','$FILA','$AGENTE','$EVENTO','$PARAM1','$PARAM2','$PARAM3','$PARAM4') " -h $HOST_DB -d $BASE_DB -U $USUARIO ;; esac done #Removendo LIXO psql -c " delete from $TABELA where evento not in ('COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL','EXITWITHTIMEOUT','TIMEOUT','CHAMANDO','NOANSWER','COMPLETAAGENT','COMPLETACALLER','BUSY','ATENDIDA','TRANSBORDANDO','TRANSBORDADO','ABANDON','COMPLETEAGENT','COMPLETECALLER','CONNECT','ENTERQUEUE','TRANSFER','BUSYS','NOANSWERS') " -h $HOST_DB -d $BASE_DB -U $USUARIO rm -rf /tmp/queue_log.pid exit