PABX da Simples IP
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.
 
 
 
 
 
 

330 lines
14 KiB

#!/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