forked from SimplesIP/pabx-app
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
331 lines
14 KiB
331 lines
14 KiB
2 years ago
|
#!/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
|
||
|
|
||
|
|