Este script sirve para que te avise, llamando a tu interno cuando se caiga una troncal SIP.
Tener en cuenta que está hecha para usar con chansip.
Este script se puede configurar como tarea para que corra cada X tiempo, de acuerdo a la necesidad de cada uno.
Saludos!
#!/bin/bash
--- CONFIGURACIÓN ---
TRUNK_HOST="IP_DE_TU_TRONCAL"
INTERNO="TU_INTERNO"
CALLFILE_DIR="/var/spool/asterisk/outgoing"
TEMP_DIR="/tmp"
---------------------
1. Ejecuta "sip show peers" buscando la IP y extrae la columna del estado (usualmente la última o anteúltima)
Al usar grep 'OK', nos aseguramos de que responda al ping correctamente.
ESTADO_OK=$(/usr/sbin/asterisk -rx "sip show peers" | grep "$TRUNK_HOST" | grep -o "UNREACHABLE")
2. Verificar si devolvió la palabra "UNREACHABLE"
if [ "$ESTADO_OK" == "UNREACHABLE" ]; then
FILE_NAME="call_XXX_$INTERNO.call"
# Crear el archivo de llamada temporal
cat <<EOF > $TEMP_DIR/$FILE_NAME
Channel: Local/$INTERNO@from-internal
MaxRetries: 1
RetryTime: 60
CallerID: "Troncal XXX caida" <XXX>
WaitTime: 30
Application: Playback
Data: custom/troncal_XXX_caida
EOF
# Ajustar permisos para Asterisk
chown asterisk:asterisk $TEMP_DIR/$FILE_NAME
# Mover al directorio saliente para gatillar la llamada
mv $TEMP_DIR/$FILE_NAME $CALLFILE_DIR/
echo "¡Depuración Exitosa! La IP $TRUNK_HOST está en estado UNREACHABLE. Llamando al $INTERNO..."
else
echo "La troncal con IP $TRUNK_HOST sigue OK"
fi