#!/bin/bash trap "" 2 20 LOG=$1 [ -z "$LOG" ] && LOG="/var/log/asterisk/full" tracert() { TIPO=$1 FONE=$2 if [ "$TIPO" == "entrantes" ] ; then ID_LOG=$(grep "$FONE" $LOG | grep "entrada" | awk {'print $4'} | sed -e "s/.*\]\[//g" | sed -e "s/\].*//g" | tail -n1) fi if [ "$TIPO" == "saintes" ] ; then ID_LOG=$(grep "$FONE" $LOG | grep "verifica_rota.php,$FONE," | awk {'print $4'} | sed -e "s/.*\]\[//g" | sed -e "s/\].*//g" | tail -n1) [ -z "$ID_LOG" ] && ID_LOG=$(grep "$FONE" $LOG | grep "padrao:1\]" | awk {'print $4'} | sed -e "s/.*\]\[//g" | sed -e "s/\].*//g" | tail -n1) fi #ID_LOG=$(grep "$FONE" /var/log/asterisk/full | grep "entrada" | awk {'print $4'} | sed -e "s/.*\]\[//g" | sed -e "s/\].*//g" | tail -n1) [ -z "$ID_LOG" ] && clear && echo -e "Telefone nao encontrado\n" && menu DADOS=$(grep "$ID_LOG" $LOG | egrep -v "(s@macro-info-agente)" | egrep "(lista_negra.php,|Goto\(|serverAgi.php,|Playback|BackGround| Queue|@app-callcenter|@ext-transferencia:1\]|macro-verifica-rota:[23]|macro-dial-interno|macro-dial-externo|app_dial.c|macro-hangup|app_queue.c|chan_sip.c|ext-callback-externo|macro-dial-saida-pstn|macro-callerid|macro-gravacao|ext-fila|psq-|ext-horarios|macro-limite-ligacao-entrante|ext-voicemail|res_agi.c)") ROTA=$(echo "$DADOS" | awk {'print $9'} | grep "lista_negra.php" | cut -d ',' -f 3 | sed -e "s/\".*//g" | head -n1) ! [ -z "$ROTA" ] && TRONCO=$(psql -Atc "select 'TIPO: '||tipo|| ' - NOME: '||nome from pbx_troncos where id in (select id_tronco from pbx_rotas_entrada_troncos where id_rota = '$ROTA')" -d pbx) ROTA=$(echo "$DADOS" | awk {'print $9'} | grep "lista_negra.php" | cut -d ',' -f 3 | sed -e "s/\".*//g" | head -n1) if [ "$TIPO" == "entrantes" ] ; then ! [ -z "$ROTA" ] && TRONCO=$(psql -Atc "select 'TIPO: '||tipo|| ' - NOME: '||nome from pbx_troncos where id in (select id_tronco from pbx_rotas_entrada_troncos where id_rota = '$ROTA')" -d pbx) fi if [ "$TIPO" == "saintes" ] ; then ! [ -z "$ROTA" ] && TRONCO=$(psql -Atc "select 'TIPO: '||tipo|| ' - NOME: '||nome from pbx_troncos where nome in (select canal from pbx_rotas_saida_canais where id_rota = '$ROTA')" -d pbx) fi clear echo "IDENTIFICADOR DA CHAMADA = $ID_LOG" echo "" echo "TRONCO" echo "$TRONCO" echo "" echo "$DADOS" | while read LINHA; do PARTE1=$(echo "$LINHA" | awk {'print $5,$7'} | egrep "(@|app_dial.c|app_queue.c|chan_sip.c|res_agi.c)" | sed -e "s/\[//g" | cut -d '@' -f 2 | grep -v "padrao/n" | sed -e "s/\:.*//g") case $PARTE1 in entrada-*) NUMERO=$(echo "$LINHA" | grep "lista_negra.php" | awk {'print $9'} | cut -d ',' -f 2 | sed -e "s/\".*//g") DDR=$(echo "$LINHA" | grep "lista_negra.php" | awk {'print $7'} | cut -d '@' -f 1 | sed -e "s/\[//g" | sed -e "s/\:.*//g") CONTEXTO=$(echo "$LINHA" | grep "lista_negra.php" | awk {'print $7'} | sed -e "s/\[//g" | sed -e "s/\:.*//g" | cut -d '@' -f 2) ROTA_ENTRADA=$(echo "$LINHA" | grep "lista_negra.php" | awk {'print $9'} | cut -d ',' -f 3 | sed -e "s/\".*//g") DESTINO_ACAO=$(echo "$LINHA" | grep -v "lista_negra.php" | awk {'print $9'} | sed -e "s/\"//g" | cut -d ',' -f 1) DESTINO_OPCAO=$(echo "$LINHA" | grep -v "lista_negra.php" | awk {'print $9'} | sed -e "s/\"//g" | cut -d ',' -f 2) ! [ -z "$NUMERO" ] && echo "NUMERO DO CLIENTE = $NUMERO" ! [ -z "$ROTA_ENTRADA" ] && echo "ROTA ENTRADA = $ROTA_ENTRADA" ! [ -z "$CONTEXTO" ] && echo "CONTEXTO = $CONTEXTO" ! [ -z "$DDR" ] && echo "DDR = $DDR" ! [ -z "$DESTINO_ACAO" ] && echo "DESTINO_ACAO = $DESTINO_ACAO" ! [ -z "$DESTINO_OPCAO" ] && echo "DESTINO_OPCAO = $DESTINO_OPCAO" && echo "" ;; ura-*) URA=$(echo "$LINHA" | awk {'print $7'} | cut -d '@' -f 2 | sed -e "s/\[//g" | sed -e "s/\:.*//g" | sed -e "s/ura-//g") OPCAO=$(echo "$LINHA" | grep "[0-9]@ura*" | awk {'print $7'} | sed -e "s/\[//g" | sed -e "s/\:.*//g" | cut -d '@' -f 1) AUDIO=$(echo "$LINHA" | grep "BackGround" | awk {'print $9'}| cut -d '"' -f 2) && echo "" DESTINO=$(echo "$LINHA" | grep "Goto" | awk {'print $9'}| cut -d '"' -f 2) INTEGRACAO=$(echo "$LINHA" | grep "AGI" | awk {'print $9'}| cut -d '"' -f 2) ! [ -z "$URA" ] && echo "ID URA = $URA" ! [ -z "$OPCAO" ] && echo "OPCAO = $OPCAO" ! [ -z "$AUDIO" ] && echo "AUDIO = $AUDIO" ! [ -z "$DESTINO" ] && echo "DESTINO = $DESTINO" && echo "" ! [ -z "$INTEGRACAO" ] && echo "INTEGRACAO = $INTEGRACAO" && echo "" ;; ext-anuncios) ANUNCIO=$(echo "$LINHA" | grep "Playback" | awk {'print $7'} | cut -d '@' -f 1 | sed -e "s/\[a//g") AUDIO=$(echo "$LINHA" | grep "Playback" | awk {'print $9'}| cut -d '"' -f 2) DESTINO=$(echo "$LINHA" | grep "Goto" | awk {'print $9'}| cut -d '"' -f 2) INTEGRACAO=$(echo "$LINHA" | grep "AGI" | awk {'print $9'}| cut -d '"' -f 2) ! [ -z "$ANUNCIO" ] && echo "ID ANUNCIO = $ANUNCIO" ! [ -z "$AUDIO" ] && echo "AUDIO = $AUDIO" ! [ -z "$DESTINO" ] && echo "DESTINO = $DESTINO" && echo "" ! [ -z "$INTEGRACAO" ] && echo "INTEGRACAO = $INTEGRACAO" && echo "" ;; ext-fila|app-callcenter) FILA=$(echo "$LINHA" | grep "Queue" | awk {'print $9'} | cut -d '"' -f 2 | cut -d ',' -f 1) GRAVACAO=$(echo "$LINHA" | grep "userfield" | awk {'print $9'} | cut -d '"' -f 2 | cut -d ',' -f 1 | cut -d '=' -f 2) RAMAL=$(echo "$LINHA" | grep "app-callcenter:1\]" | grep -v "h@app-callcenter" | awk {'print $7'} | cut -d '@' -f 1 | cut -d '[' -f 2) ATUALIZA=$(echo "$LINHA" | grep "app-callcenter" | egrep "(1\?System|1\?AGI)" | awk {'print $9,$10,$11,$12'} | cut -d '"' -f 2| cut -d '(' -f 2 | cut -d ')' -f 1) ! [ -z "$FILA" ] && echo "FILA = $FILA" ! [ -z "$GRAVACAO" ] && echo "GRAVACAO = $GRAVACAO" ! [ -z "$RAMAL" ] && echo "RAMAL = $RAMAL" && echo "" ! [ -z "$ATUALIZA" ] && echo "ATUALIZA STATUS = $ATUALIZA" && echo "" ;; ext-transferencia) RAMAL_TRANSFER=$(echo "$LINHA" | grep "ResetCDR" | awk {'print $7'} | cut -d '@' -f 1 | cut -d '[' -f 2) ! [ -z "$RAMAL_TRANSFER" ] && echo "TRANSFERENCIA PARA = $RAMAL_TRANSFER" && echo "" ;; macro-verifica-rota) VERIFICA_ROTA=$(echo "$LINHA" | grep "verifica_rota.php" | awk {'print $9'} | cut -d '"' -f 2) ROTA_ENCONTRADA=$(echo "$LINHA" | grep "ID_ROTA" | awk {'print $9,$10,$11,$12,$13,$14,$15,$16,$17'}| cut -d '"' -f 2) ! [ -z "$VERIFICA_ROTA" ] && echo "VERIFICANDO PERMISSAO = $VERIFICA_ROTA" ! [ -z "$ROTA_ENCONTRADA" ] && echo "ROTA ENCONTRADA = $ROTA_ENCONTRADA" && echo "" ;; macro-dial-interno|macro-dial-externo) DISCAGEM_RAMAL=$(echo "$LINHA" | grep "Dial"| awk {'print $9'} | cut -d '"' -f 2) SIGAME=$(echo "$LINHA" | grep "SIGAME" | awk {'print $9,$10,$11,$12,$13'} | cut -d '"' -f 2) ! [ -z "$SIGAME" ] && echo "SIGAME = $SIGAME" && echo "" ! [ -z "$DISCAGEM_RAMAL" ] && echo "DISCAGEM PARA O RAMAL = $DISCAGEM_RAMAL" && echo "" ;; app_dial.c) STATUS=$(echo "$LINHA" | grep "app_dial.c" | cut -d ']' -f 4) ! [ -z "$STATUS" ] && echo "STATUS DA DISCAGEM = $STATUS" && echo "" ;; app_queue.c) STATUS=$(echo "$LINHA" | grep "app_queue.c" | cut -d ']' -f 4) ! [ -z "$STATUS" ] && echo "STATUS DA FILA = $STATUS" && echo "" ;; chan_sip.c) STATUS=$(echo "$LINHA" | grep "chan_sip.c" | grep -v "not resolve socket " | cut -d ']' -f 4) ! [ -z "$STATUS" ] && echo "STATUS SIP = $STATUS" && echo "" ;; res_agi.c) STATUS=$(echo "$LINHA" | grep "\(Playback\)" | awk {'print $12'}) ! [ -z "$STATUS" ] && echo "CHAMADA NAO CLASSIFICADA = $STATUS" && echo "" ;; ext-callback-externo) VARIAVEIS=$(echo "$LINHA" | grep " Set" | awk {'print $9'} | cut -d '"' -f 2) CALLBACK=$(echo "$LINHA" | grep "System" | awk {'print $9,$10,$11,$12,$13,$14'} | cut -d '"' -f 2 ) ! [ -z "$VARIAVEIS" ] && echo "VARIAVEIS = $VARIAVEIS" ! [ -z "$CALLBACK" ] && echo "CALLBACK = $CALLBACK" && echo "" ;; macro-gravacao) GRAVACAO=$(echo "$LINHA" | grep "userfield" | awk {'print $9'} | cut -d '"' -f 2 | cut -d ',' -f 1 | cut -d '=' -f 2) ! [ -z "$GRAVACAO" ] && echo "GRAVACAO = $GRAVACAO" ;; macro-callerid) BINANOME=$(echo "$LINHA" | grep "CALLERID(name)" | awk {'print $9'} | cut -d '"' -f 2 | cut -d ',' -f 1 | cut -d '=' -f 2) BINAEXTERNA=$(echo "$LINHA" | grep "CALLERID(num)" | grep -v "0?Set" | awk {'print $9'} | cut -d '"' -f 2 | cut -d ',' -f 1 | cut -d '=' -f 2) ! [ -z "$BINANOME" ] && echo "BINA NOME = $BINANOME" ! [ -z "$BINAEXTERNA" ] && echo "BINA EXTERNA = $BINAEXTERNA" ;; macro-dial-saida-pstn) RAMAL=$(echo "$LINHA" | grep "__RAMAL" | awk {'print $9'} | cut -d '"' -f 2 | cut -d ',' -f 1 | cut -d '=' -f 2) DIAL=$(echo "$LINHA" | grep "Dial"| awk {'print $9'} | cut -d '"' -f 2) ! [ -z "$RAMAL" ] && echo "RAMAL = $RAMAL" ! [ -z "$DIAL" ] && echo "DISCAGEM PELO TRONCO = $DIAL" && echo "" ;; psq-*-ini) ID=$(echo "$LINHA" | grep ":1]" | awk {'print $7'} | cut -d '@' -f 2 | cut -d '-' -f 2) ! [ -z "$ID" ] && echo "" ! [ -z "$ID" ] && echo "ID PESQUISA DE SATISFACAO = $ID" && echo "" ;; ext-horarios) HORARIO=$(echo "$LINHA" | grep ":1\]" | awk {'print $7'} | cut -d '@' -f 1 | sed -e "s/\[//g") DESTINO=$(echo "$LINHA" | grep "Goto(" | awk {'print $9'}| cut -d '"' -f 2) DESTINOGOTO=$(echo "$DADOS" | grep "$HORARIO@ext-horarios"| grep "Goto(" | tail -n1 | awk {'print $9'}| cut -d '"' -f 2) DESTINOHORARIO=$(echo "$DADOS" | grep "$HORARIO@ext-horarios"| grep "GotoIfTime" | tail -n1 | awk {'print $9'}| cut -d '"' -f 2) ! [ -z "$HORARIO" ] && echo "ID HORARIO = $HORARIO" ! [ -z "$DESTINO" ] && echo "DESTINO FORA DE HORARIO = $DESTINO" && echo "" ! [ -z "$HORARIO" ] && [ -z "$DESTINOGOTO" ] && echo "DESTINO POR HORARIO = $DESTINOHORARIO" && echo "" ;; ext-voicemail) VOICEMAIL=$(echo "$LINHA" | grep "VoiceMail" | awk {'print $9'}| cut -d '"' -f 2) ! [ -z "$VOICEMAIL" ] && echo "VOICEMAIL = $VOICEMAIL" && echo "" ;; macro-limite-ligacao-entrante) LIMITE=$(echo "$LINHA" | grep "Playback" | awk {'print $9'}| cut -d '"' -f 2) ! [ -z "$LIMITE" ] && echo "" ! [ -z "$LIMITE" ] && echo "ATIVADO LIMITE DE LIGACOES ENTRANTES = $LIMITE" && echo "" ;; macro-hangup) SCRIPTS=$(echo "$LINHA" | egrep "( System| AGI|1\?AGI)" | awk {'print $9,$10,$11'} | cut -d '"' -f 2 ) HANGUP=$(echo "$LINHA" | grep "Hangup(" | awk {'print $8'} | cut -d '(' -f 1 ) ! [ -z "$SCRIPTS" ] && echo "HANGUP = $SCRIPTS" ! [ -z "$HANGUP" ] && echo "HANGUP = $HANGUP" && echo "" esac done } menu() { while [ "TRUE" ] do echo "Escolha uma opcao" echo "1 - Rastrear Ligacoes de Entrada" echo "2 - Rastrear Ligacoes de Saida" echo "3 - Para o detalhamento completo da ultima chamada rastreada" echo "4 - Sair" echo "" echo -n ":" read -n1 escolha case $escolha in 1) clear while [ "TRUE" ] do echo "AVISO: O Rastreamento de ligacao busca apenas a ultima ligacao do numero informado." echo "" echo "Informe um numero de telefone que ligou para a central hoje e pressione Enter." echo "" echo -n ":" read fone_cliente if [ -z "$fone_cliente" ] ; then clear echo "Telefone Invalido." echo "" else break; fi done clear tracert entrantes $fone_cliente ;; 2) clear while [ "TRUE" ] do echo "AVISO: O Rastreamento de ligacao busca apenas a ultima ligacao do numero informado." echo "" echo "Informe um numero de telefone discado hoje ou um ramal que apresentou problema e pressione Enter." echo "" echo -n ":" read fone_cliente if [ -z "$fone_cliente" ] ; then clear echo "Telefone Invalido." echo "" else break; fi done clear tracert saintes $fone_cliente ;; 3) [ -z "$ID_LOG" ] && clear && echo -e "Passe pelas opcoes 1 ou 2 antes\n" && menu ! [ -z "$ID_LOG" ] && clear && grep "$ID_LOG" $LOG && exit ;; 4) echo "" exit ;; esac done } clear menu