img

Автоматическое обновление модулей FreePBX 13

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

В графическом интерфейсе FreePBX существует коммерческий модуль SysAdmin Pro, стоимость которого составляет $25 (на


Как работает скрипт

Важно: Наш скрипт разработан для FreePBX 13, так как использует командную оболочку fwconsole. Чтобы адаптировать скрипт под более ранние версии, вы можете использовать amportal в 11 и 13 строчках.

Создаем служебные для скрипта файлы:

[root@asterisk ~]#touch /home/admin/log_mail.txt
[root@asterisk ~]#touch /home/admin/upgradestatus.txt

Итак, скрипт имеет следующее содержание:

#!/bin/sh
LOGSIZE=`ls -l /home/admin/log_mail.txt |  awk '{ print $5 }'` \формируем размер лог - файла, в который мы будем записывать события в работе нашего скрипта
upgradable=`fwconsole ma -f showupgrades | grep Upgradable` \команда проверяет, есть ли доступные для обновления модули
FILENAME=/home/admin/upgradestatus.txt \созданный нами ранее файл, в который мы будем записывать вывод команды выше, в котором мы проверяем доступные для апгрейда модули
LOGFILE=/home/admin/log_mail.txt \путь к лог - файлу
DATE="`date +%d.%m.%Y" "%H:%M:%S`" \дата, которую мы будем использовать для вывода в лог - файле
echo "$upgradable" > /home/admin/upgradestatus.txt \записываем результат проверки доступных для обновления модулей в файл для хранения
FILESIZE=$(stat -c%s "$FILENAME") \после записи в файл, записываем размер этого файла в переменную
if [ $FILESIZE -ne 1 ]; then \проверяем размер. Если размер отличается от единицы, то выполняем обновление модулей. В ином случае просто записываем в лог – файл информацию, о том, что доступных для апгрейда модулей нет
sleep 5 \ждем 5 секунд
echo `fwconsole ma upgradeall` \ даем команду для обновления всех модулей
sleep 30 \после этого ждем 30 секунд
echo `fwconsole r` \перезагружаем FreePBX
sleep 10 \ждем еще 10 секунд
echo "OK :: $DATE :: all modules were successfully upgraded" >> "$LOGFILE" \записываем в лог – файл информацию о том, что модули были обновлены 
else \случай, если размер файла равен или меньше единицы
echo "OK :: $DATE :: there is no upgradable modules" >> "$LOGFILE" \если у нас нет модулей для обновления, делаем соответствующую пометку в лог - файле
fi
if [ $LOGSIZE -ge 150000 ]; then  \проверяем размер лог – файла. Если он достиг 150 кБ, то мы его опустошаем
   cat /dev/null > /home/admin/log_mail.txt
fi
cat /dev/null > /home/admin/upgradestatus.txt \опустошаем файл, в который мы записываем результат проверки доступных для апгрейда модулей

Готово. Сам скрипт вы можете скачать по ссылке ниже. Не забудьте изменить расширение файла на .sh перед копированием на сервер:

Скачать скрипт

Работа скрипта по расписанию

После того, как вы сохранили скрипт на своем компьютере его необходимо перенести на сервер. Мы рекомендуем воспользоваться SFTP клиентом, например, WinSCP, с помощью которого, можно подключиться по SSH реквизитам к серверу и закинуть файл скрипта в удобную для вас директорию. Предположим, вы закинул файл upgrade.sh в директорию /home:

[root@asteriskpbx]# dos2unix /home/upgrade.sh //преобразуем скрипт для автоматического обновления модулей
[root@asteriskpbx]# chmod 777 /home/upgrade.sh //дадим необходимые права скрипту

Проверим скрипт дебагом. Делается следующей командой:

[root@asterisk home]# bash -x upgrade.sh

Если все корректно и скрипт не имеет ошибок, то вы увидите следующий вывод, в котором будет пошагово проиллюстрирована работа скрипта:

Автоматическое обновление модулей FreePBX 13

Теперь переходим к расписанию для скрипта. Настройку выполнять будем с помощью cron:

[root@asteriskpbx]# crontab -e

В нашем случае, мы хотим чтобы скрипт выполнялся ежедневно в полночь. Для этого, вносим следующие изменения в файл:

0 0 * * * /bin/bash /home/upgrade.sh >/dev/null

Сохраняем изменения, нажав F2, затем Yes и Enter. Готово! Теперь каждый день, в полночь, при доступности обновления, модули вашего FreePBX 13 будут обновлены.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
DevOps
Скидка 25%
DevOps-инженер с нуля
Научитесь использовать инструменты и методы DevOps для автоматизации тестирования, сборки и развертывания кода, управления инфраструктурой и ускорения процесса доставки продуктов в продакшн. Станьте желанным специалистом в IT-индустрии и претендуйте на работу с высокой заработной платой.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Привет, дорогой читатель! В повседневной работе зачастую не хватает автоматизации. Поэтому, мы решили создать калькулятор инстал
img
Мы подумали, а почему бы не консолидировать все знания по Cisco VoIP продуктам и их настройке в единый документ? Добавить в них
img
Привет! Для удобства, мы структурировали все материалы по графическому интерфейсу FreePBX в нашей базе знаний в единый файл. Сам
img
Вам, как сетевому инженеру, крайне важно разбираться в том, каким образом вызовы VoIP влияют на пропускную способность канала в
img
В этой статье расскажем как отправлять различные СМС сообщения пользователям, позвонившим в контакт-центр Октелл и запросившим т
img
Всем современным кампаниям, производящим товары и оказывающим услуги, необходимо иметь специалистов, работающих с потенциальными
21 ноября
20:00
Бесплатный вебинар
Введение в Docker