воскресенье, 18 января 2009 г.

Автоматические обновления

Постепенно внедряю свободное ПО на работе, благо руководство эту идею приветствует и дало зеленый свет. Нескольким сотрудникам заменил операционную систему с Windows XP на Ubuntu. Настройка рабочего места под конкретного пользователя заняла не так много времени, хотя еще встречаются некоторые сложности, но надеюсь они будут постепенно решены. На сегодняшний день решил вот какую проблему. Установка обновлений. Обновления выходят часто, что свидетельствует о развитии продукта. Но у пользователей нет полномочий на установку обновлений, да и не к чему им заморачиваться над этим вопросом, этот процесс было решено автоматизировать. для этого восспользовался штатным планировщиком crontab.
первым вариантом было добавления задания в кронтаб:
sudo crontab -e
и добавлена запись задания:

# m h dom mon dow command
00 12 * * * apt-get update && apt-get dist-upgrade

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

# m h dom mon dow command
00 12 * * * /usr/local/bin/update >> /home/patriot/cron.log

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

#!/etc/bash
export PATH=$PATH:/usr/sbin:/usr/bin:/usr/local/bin
apt-get update && apt-get dist-upgrade

И все заработало. Победа. Но этот путь хоть и не очень длинный но тернистый оказался не единственным способом. Можно поступить гораздо проще, добавив нужную команду в файл /etc/crontab:

sudo nano /etc/crontab

# m h dom mon dow user command
00 12 * * * root apt-get update && apt-get dist-upgrade >> /home/patriot/cron.log

и вся война на этом закончилась. Теперь аналогичные команды осталось прописать на всех компьютерах пользователей, и они будут иметь все доступные обновления. По маске команды планировщика я выставляю ежедневное обновление в 12-00 (время обеда, нагрузка на корпоративную сеть минимальна)