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

naomi

Moderator
Команда форума
КАК РАБОТАЕТ СКРИПТ
Создаем служебные для скрипта файлы:

touch /home/admin/log_mail.txt

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:

dos2unix /home/upgrade.sh //преобразуем скрипт для автоматического обновления модулей

chmod 777 /home/upgrade.sh //дадим необходимые права скрипту


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

bash -x upgrade.sh

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

1.png


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

crontab -e

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

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

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

Вложения

Последнее редактирование:
Верх