В графическом интерфейсе 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
Если все корректно и скрипт не имеет ошибок, то вы увидите следующий вывод, в котором будет пошагово проиллюстрирована работа скрипта:
Теперь переходим к расписанию для скрипта. Настройку выполнять будем с помощью cron:
[root@asteriskpbx]# crontab -e
В нашем случае, мы хотим чтобы скрипт выполнялся ежедневно в полночь. Для этого, вносим следующие изменения в файл:
0 0 * * * /bin/bash /home/upgrade.sh >/dev/null
Сохраняем изменения, нажав F2, затем Yes и Enter. Готово! Теперь каждый день, в полночь, при доступности обновления, модули вашего FreePBX 13 будут обновлены.