ћерион Ќетворкс

¬ графическом интерфейсе FreePBX существует коммерческий модуль SysAdmin Pro, стоимость которого составл€ет $25 (на 24 июл€ 2017 года это 1 485 руб.). ћы не ищем легких путей, поэтому, мы разработали скрипт, который позвол€ет автоматически обновл€ть все доступные дл€ апгрейда модули по заданному расписанию. —пешим поделитьс€ :)


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

¬ажно: Ќаш скрипт разработан дл€ 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 будут обновлены.


ѕолезна ли ¬ам эта стать€?

–аз в неделю мы отправл€ем дайджест с самыми интересными стать€ми.

P.S. ≈сли укажите свою дату рождени€, то мы об€зательно ¬ас поздравим и подарим небольшой подарок :)

Ќажима€ на кнопку "ѕодписатьс€", вы даете согласие на обработку своих персональных данных