lavariega.com

Mi espacio de notas, hablo de Tecnología.
Solución-fallo-troncales-Asterisk

Solución a Caída de troncales Asterisk

En ocaciones las troncales IAX de un servicio de telefonía entre Asterisk o hacia algún otro carrier que soporte el protocolo cae. debido a falta de servicio o a tiempos altos. por eso aqui veremos como dar solución a Solución fallo troncales Asterisk.

El siguiente script no soluciona el problema, ya que debe ser revisado en temas de QoS, o configuracion de la troncal, sin embargo permite parchearlo mediante un servicio que valide si el servicio está activo o muerto. en caso de estar muerto manda a reiniciar el módulo de iax! de tal manera que vuelve a intentar los registros. Para hacer uso de el, debes copiar el codigo y ponerlo en un archivo bash, agregarlo al crontab y ponerlo en modo ejecutable.

1.- Bash para Solución fallo troncales Asterisk IAX

#!/bin/bash

#Autor: Andres Lavariega-lavariega.com andreslavariega@evolutel.com.mx
#Solución fallo troncales Asterisk
#Reiniciar el módulo de iax!
#de tal manera que vuelve a intentar los registros.
#No tira los servicios de asterisk ni reinicia el servidor

set -x

cd /root/
TEST=$(/usr/sbin/asterisk -rx "iax2 show peers" | grep OK | wc -l)
sleep 1
#Son dos troncales por lo que test es igual a dos

if [ TEST eq 2]
       then
            echo "todo bien"
            exit ##Se acaba
fi
date >> iax_down.log
/usr/sbin/asterisk -rx "module unload chan_iax2.so" > /dev/null
sleep 30;
/usr/sbin/asterisk -rx "module load chan_iax2.so" > /dev/null

2.- Bash para Solución fallo troncales Asterisk SIP

#!/bin/bash

#Autor: Andres Lavariega-lavariega.com andreslavariega@evolutel.com.mx
#Solución fallo troncales Asterisk
#Reiniciar el módulo de iax!
#de tal manera que vuelve a intentar los registros.
#No tira los servicios de asterisk ni reinicia el servidor

set -x

cd /root/
TEST=$(/usr/sbin/asterisk -rx "sip show peers" | grep OK | wc -l)
sleep 1
#Son dos troncales por lo que test es igual a dos

if [ TEST eq 2]
       then
            echo "todo bien"
            exit ##Se acaba
fi
date >> iax_down.log
/usr/sbin/asterisk -rx "module unload chan_sip.so" > /dev/null
sleep 30;
/usr/sbin/asterisk -rx "module load chan_sip.so" > /dev/null

3.- Ahora un crontab para automatizar el test

Ahora lo que faltaria es agregar el bash a un crontab, y ponerle tiempo de ejecución que consideres necesaria. en mi caso lo tengo cada 15 minutos. con esto tendrías un Solución fallo troncales Asterisk.

Si tienes un proyecto de telefonía, CRM o telecomunicaciones no dudes en invitarme! me gusta participar en estos proyectos aportando soluciones de valor. Te dejo mi correo para cualquier duda. andreslavariega@gmail.com , o tambien puedes dar clic en el botón de arriba a la derecha para mandarme algún mensaje .

Te recomeindo leer mi articulo sobre las bondades de una centralita con Asterisk. y un libro sobre asterisk en : http://172.236.115.75/aprende-asterisk-la-guia-definitiva/

Un saludo

7 comentarios en "Solución a Caída de troncales Asterisk"

  • Esteban
    17 junio, 2019 a las 11:46 am

    Bueno el post! y gracias por el apoyo personal sobre asterisk y conmutadores

  • giovanny gonzalez
    28 abril, 2020 a las 2:15 pm

    Buenas hermano tu por casualidad haz configurado un telefono cisco cp 7820 en una central issabel si es asi puedes explicarme el proceso por favor y gracias

    • Andres Lavariega
      30 abril, 2020 a las 8:49 am

      Primero debes investigar si tiene soporte para sip y cargarle el firmware, dependiendo del firmware, es el proceso de configuración. Puedes ser por ftp, tftp o incluso hay unos que tienen soporte web.

  • Gustavo Salgado
    26 mayo, 2024 a las 12:12 pm

    Hola Andrés, me parece excelente tu aporte. Yo hice algo similar, inspirado en tu trabajo. Que lo automatice en un crontab cada minuto, pero que la acción tenga un umbral de 30 minutos cuando esté caída la troncal PJSIP.
    Te lo comparto:

    #!/bin/bash

    #archivo de registro que guarda la marca de tiempo de la última ejecución
    LAST_RUN_FILE=”/root/registro_de_ejecucion”

    # Obtener la fecha y hora actuales en segundos desde epoch
    current_time=$(date +%s)

    # Definir el umbral de ejecucion a de 30 minutos (en segundos)
    threshold=$((30 * 60))

    # Ejecuta el estado de troncal y guarda el resultado solo si está caída en una variable
    output=$(/usr/sbin/asterisk -rx “pjsip show aor TroncalGustavo”)

    # Revisa la línea que contiene “Contact:” si contiene “Unavail”
    if echo “$output” | grep -q “Contact:.*Unavail”; then
    # Verificar si el archivo de registro existe
    if [ -f “$LAST_RUN_FILE” ]; then
    # Leer la última marca de tiempo del archivo
    last_run_time=$(cat “$LAST_RUN_FILE”)
    # Calcular la diferencia de tiempo
    time_diff=$((current_time – last_run_time))
    else
    # Si el archivo no existe, considera que la diferencia de tiempo es mayor al umbral.
    time_diff=$((threshold + 1))
    fi

    # Verificar si la diferencia de tiempo es mayor o igual al umbral
    if [ “$time_diff” -ge “$threshold” ]; then
    # Ejecuta el script de alerta y acciones
    /root/falla.sh
    # Actualizar el archivo de registro con la marca de tiempo actual
    echo “$current_time” > “$LAST_RUN_FILE”
    fi
    fi

    • Andres Lavariega
      23 octubre, 2024 a las 3:15 pm

      Hola! se ve interesante tu script! que bueno que te sirvió para automatizar !

Deja un comentario

No se publicará tu dirección de correo electrónico. Los campos obligatorios están marcados con *.

*
*

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Contáctame

¡Conversemos en WhatsApp para apoyarte en tu proyecto de telefonía o call center!

aprendizaje asterisk audio brew call center Centos cli codecs comandos contraseñas desarrollo de software enfermedad Firewall free GNU google grandstream gratis Issabel ivr lavariega libros linux mac manuales Maquina Virtual marcacion mexico OpenSource raspberry rtp seguridad SIP sofphone sox ssh sysadmin telefonia tips ubuntu vim VirtualBox virtualizacion virus voip


Apasionado de las tecnologías VoIP