[AsteriskBrasil] Monitorar quando um ramal se loga

Júlio Gadioli Soares jugaso em gmail.com
Quinta Junho 11 20:33:31 -03 2020


Srs. blz!!!
 Corrigido todo o loop ... gerando log. testei aqui tudo funcionando.

Solução nível bash...

Depois vejo de buscar as contas e checar com as contas já existentes no
sistema, primeira vez que monto algo assim para asterisk.

Explica rapidamente, ... verifica se conta está on-line, se está insere no
log_sip_Online.txt idem para log_sip_offline.txt
quando verifica novamente, vê se está no log se sim .. sai sem fazer nada
.. senão ... muda o SIP de log e dai pode disparar outros comandos, como
queria enviar para um db as informações.

_Modifique as pastas e nomes para suas preferências, só lembrando de dar
permissão ao arquivo e inserir o PATH na cron, senão não roda !!!
até + galera!!!

Detalhe legal do log, ao menos registra a data e hora! Resolvi mover de log
para não gerar um log muito extenso, e ter de fato só o que precisa.
comentem os echo ai ... na cron são inúteis.

# crontab -e
--------------------------------------------

>
> PATH=/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
> * * * * * /usr/local/bin/sip_monitore.sh

-----------------------------------------------

sip_monitore.sh

> #!/bin/bash
> contas_sip=(4444 6001 6002 6003 6004 7777)
>
> LOG_ON="/usr/local/bin/log_sip_Online.txt"
> LOG_OFF="/usr/local/bin/log_sip_offline.txt"
>
> if [ ! -f "$LOG_ON" ]; then `umask 0; /usr/local/bin/log_sip_Online.txt`
> fi
> if [ ! -f "$LOG_ON" ]; then `umask 0; /usr/local/bin/log_sip_offline.txt`;
> fi
>
> data=`date +%d/%m/%Y' '%T''`
>
> verificastatus(){
>   contas=("${!1}")
>   for sip in ${contas[@]}
>   do
> #Verificar se a conta está online
>     RESIP=`asterisk -x "sip show peers" 2>/dev/null | grep -w OK | awk
> '{print $1}' | awk -F'/' '{print $1}' | grep "${sip}"`
> if [ -z $RESIP ]; then
> #Verifica se conta existe
> EXISTSIP=`asterisk -x "sip show peers" 2>/dev/null | awk '{print $1}' |
> awk -F'/' '{print $1}' | grep "${sip}"`
> if [ -z $EXISTSIP ]; then continue
> # echo ${sip} "<<<CONTA INEXISTENTE>>>"
> # continue
> fi
>
> declare regex="\s+${sip}\s+"
> declare file_content=$( cat "${LOG_OFF}" )
> if [[ " $file_content " =~ $regex ]]
>    then
> # echo "${sip} está no log off line...não fazer nada"
>             continue
>    else
>             `echo ${sip} $data>>${LOG_OFF}` # insere no log_offline
>             `sed -i -e "/${sip}/d" $LOG_ON` # remove do log_online
> echo "ENVIAR ALERTA [${sip}] - ((OFFLINE))"
> fi
> else
> declare regex="\s+${sip}\s+"
> declare file_content=$( cat "${LOG_ON}" )
> if [[ " $file_content " =~ $regex ]]
>    then
> # echo "${sip} está no log ONLINE .... não fazer nada"
>             continue
>    else
> `echo ${sip} $data>>${LOG_ON}` # insere no log_Online
> `sed -i -e "/${sip}/d" $LOG_OFF` # remove do log_offline
> echo "ENVIAR ALERTA [${sip}] - ((ONLINE))"
> fi
> fi
> done
> }
>
> verificastatus contas_sip[@]
>
> exit
>


Deixe rodando com # tail -f log_sip_offline.txt é possível ver assim que o
Sip ficar Offilne o preenchimento no arquivo, ... o delete o tail -f não
exibe, mas deleta.

Claro tem um delay!!! mas funciona!
Boa sorte !!!! ate+glr

Júlio Gadioli Soares.
jugaso em gmail.com


Em qui., 11 de jun. de 2020 às 15:27, P em ulo <pavlvscaesar em gmail.com>
escreveu:

> Existe uma solução, ela foi descontinuada, porém me ajuda muito é o MONAST:
> https://dagmoller.github.io/monast/
>
>
> Em ter., 9 de jun. de 2020 às 09:21, Franque Custódio <franque em gmail.com>
> escreveu:
>
>> Bom dia, amigos da lista.
>>
>> Situação: tenhos vários ramais em softphone e preciso que, quando eles se
>> logam no sistema, seja executada uma ação (exemplo: enviar mensagem/inserir
>> em uma banco).
>>
>> Alguém tem alguma idéia de por onde começar?
>>
>> Valeu!
>>
>>
>>
>>
>> ---------------------------------------------------------------
>> Franque Custódio
>> franque em gmail.com
>> ---------------------------------------------------------------
>> _______________________________________________
>> Contact Center em Nuvem
>> Home Office
>> http://www.weontap.com.br
>> _______________________________________________
>> Para remover seu email desta lista, basta enviar um email em branco para
>> asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
>
>
>
> --
> ------------------
> Paulo César
> ------------------
> _______________________________________________
> Contact Center em Nuvem
> Home Office
> http://www.weontap.com.br
> _______________________________________________
> Para remover seu email desta lista, basta enviar um email em branco para
> asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20200611/87683758/attachment.html>


Mais detalhes sobre a lista de discussão AsteriskBrasil