#!/bin/sh #Source Library functions . /etc/rc.d/init.d/functions #Checa se o processo ja esta em execucao if [ -f /var/run/asterqueue.pid ]; then OLDPID=`head -n 1 /var/run/asterqueue.pid` if [ -f /proc/${OLDPID}/cmdline ] && ps -p ${OLDPID} >/dev/null 2>&1; then echo "Asterqueue ja esta sendo executado..." exit 1 else rm -f /var/run/asterqueue.pid fi fi #Pega o PID do Processo echo "$$" > /var/run/asterqueue.pid #Define Local de LOG LOGDIR="/var/log/asterisk" #Define Local do Arquivo de Log da Fila do Asterisk QUEUE_LOG="/var/log/asterisk/queue_log" #Define Filas a serem monitoradas QUEUEMON="9667" CHECK_LAST_LINE="" NCALL=0 [ -f $LOGDIR/asterqueue.log ] || touch $LOGDIR/asterkria.log #DEBUG DAS VARIAVEIS - FASE DE TESTE [ -f $LOGDIR/debugasterqueue.log ] || touch $LOGDIR/debugasterkria.log while [ true ] do CHECK_QLOG=`tail -n 1 $QUEUE_LOG` CHECK_EVENT=`tail -n 1 $QUEUE_LOG | cut -d \| -f 5` CHECK_UNIQUEID=`tail -n 1 $QUEUE_LOG | cut -d \| -f 2` CHECK_QCID=`tail -n 1 $QUEUE_LOG | cut -d \| -f 7` CHECK_TIME=`tail -n 1 $QUEUE_LOG | cut -d \| -f 1` if [ "$CHECK_TIME" != "$CHECK_LAST_LINE" ] then DATE=`date +%Y%m%d-%H%M%S` echo $DATE-$CHECK_QLOG >> $LOGDIR/asterqueue.log CHECK_LAST_LINE="$CHECK_TIME" if [ "$CHECK_EVENT" = "ENTERQUEUE" ] then QUEUES[$NCALL]="$CHECK_UNIQUEID-$CHECK_QCID" #DEBUG echo ENTERQUEUE - Variavel QUEUES ${QUEUES[$NCALL]} >> $LOGDIR/debugasterqueue.log tQL=$[${#QUEUES[*]} - 1] #DEBUG echo ENTERQUEUE - Variavel tQL $tQL >> $LOGDIR/debugasterqueue.log if [ $NCALL = $tQL ] then ((NCALL++)) #DEBUG echo ENTERQUEUE Variavel NCALL++ $NCALL >> $LOGDIR/debugasterqueue.log else NCALL=${#QUEUES[*]} #DEBUG echo ENTERQUEUE - Variavel NCALLQUEUES $NCALL >> $LOGDIR/debugasterqueue.log fi fi if [ "$CHECK_EVENT" = "CONNECT" ] then tQL=${#QUEUES[*]} #DEBUG echo CONNECT - Variavel tQL $tQL >> $LOGDIR/debugasterqueue.log for (( i=0; i<${tQL}; i++ )); do CHECK_QUEUES=`echo ${QUEUES[$i]} | cut -d - -f 1` #DEBUG echo CONNECT - Variavel CHECK_QUEUES $CHECK_QUEUES >> $LOGDIR/debugasterqueue.log if [ "$CHECK_QUEUES" = "$CHECK_UNIQUEID" ] then SRC=`echo ${QUEUES[$i]} | cut -d - -f 2` #DEBUG echo CONNECT - Variavel SRC $SRC >> $LOGDIR/debugasterqueue.log GET_CHANNEL=`rasterisk -rx "core show channels concise" | grep $QUEUE | grep "Bridged Call" | grep $SRC | cut -d ! -f 1` #DEBUG echo CONNECT - Variavel GET_CHANNEL $GET_CHANNEL >> $LOGDIR/debugasterqueue.log echo CONNECT - Variavel CHECKQCID $CHECK_QCID >> $LOGDIR/debugasterqueue.log DST=`rasterisk -rx "core show channel $GET_CHANNEL" | grep dst | cut -d = -f 2` echo CONNECT $QUEUE:$SRC-$DST >> $LOGDIR/debugasterqueue.log NCALL=$i #DEBUG echo CONNECT - Variavel NCALL $NCALL >> $LOGDIR/debugasterqueue.log break fi done fi fi sleep 1 done