Наша задача савнить сколько всего у нас транков и если разница между всего и зарегеных не равно нулю. Тогда перезапустить все транки. К сожалению звонки сбрасываются (

Скрипт который нужно положить в крон астериска

#!/bin/bash
# Задаем переменные
ALLTRUNKSMINIMUM="`/usr/sbin/asterisk -rx "sip show registry"`" # Смотрим статусы транков

ALLTRUNKS=`echo "$ALLTRUNKSMINIMUM" |grep "SIP registrations" |awk '{print $1}'` # Смотрим сколько всего транков в системе

REGTRUNKS=`/usr/sbin/asterisk -rx "sip show registry" |grep Registered |wc -l` # Зарегистрированные  транки (все транки со статусом Registered)

# Задаем условие

if [ "$REGTRUNKS" -lt "$ALLTRUNKS" ]; then # Если есть хоть один проблемный транк (В одном или более транке встретился статус отличный от Registered) то

sleep 5 # Ждем 5 секунд

echo `/usr/sbin/asterisk -rx "sip reload"` # Делаем sip reload

sleep 5 # Ждем 5 секунд

VAR=`/usr/sbin/asterisk -rx "sip show registry"` # Смотрим статусы транков после проверки

# Уведомляем на почту о том какие статусы стали после проверки

echo "$VAR" | mail -s "Мониторинг транков" your@mail.ru

# Если условие ложно (т.е. с  транками все хорошо)

else

echo “ALL STATUS OK” # Просто выводим что со всеми статусами все хорошо и ничего не делаем больше

fi

А еще много полезной инфы на https://www.voxlink.ru/kb/asterisk-configuration/trunkstate-monitor/