Зеркало для обновлений программы «АРМ — Звiт Страхувальника»

Все кто хоть каким то боком имеет отношение к бухгалтерам наверняка слыхал о нововведениях в Персонификации. Изменилась и периодичность сдачи отчетов (теперь каждый месяц, а было раз в году), и форма отчета и программка в которой рекомендовано делать этот самый отчет. Все настолько быстро обновляется, что бедняги-розработчики программы по персонификации строчат обновления чуть ли не по 10 штук в квартал! Но с этими постоянными обновлениями морочат себе голову еще и админы, среди которых я :( С зимы началась эта гонка версий, бесконечных обновлений и прочая суета вокруг программы для сдачи злополучного отчета. Если в этот месяц както сдали, то в следующем все сначала … обновления, формирования, заполнения, исправления, запись на флешку и вот она заветная очередь в местном Пенсионном фонде! Стоим …. долго стоим, в итоге говорят что опять чтото нето и все сначала :-D Ржач еще тот. Особенно для бухгалтеров! И так веселимся теперь каждый месяц! Но чтото я увлекся … хотел то не про это рассказать :)

А сказать хотел про то как организовать локальное хранилище обновлений для программы по Персонификации, которая так бурно развивается :) Както, помню, надоело мне отслеживать наличие обновлений и я решил вот что:

  • Зеркалить все что есть на официальном ftp проги себе на машину.
  • Дать возможность любой машине в рабочей сети получать доступ к этой папке.
  • Соорудить какуюто уведомлялку чтобы узнавать о появлении нового обновления.

К слову сказать, эта задача напомнила мне о зеркале для Symantec Offline Updates, которую я вполне успешно решил уже давно, о чем писал отдельную статью ранее. Поэтому тут уже пошел по накатанной дорожке (читай: сделал все по образу и подобию зеркала для симантековских обновлений). Так как зеркалить надо по ftp, выбор клиента очевиден — lftp. Роздавать клиентам в рабочей сети решил по SAMBA, поскольку, все кому оно теоретически может понадобиться — виндомашины бухгалтеров. С уведомлялкой особо не заморачивался — шлем себе на мыло сообщение когда появляется новый апдейт. Замечу также, что в сети есть общая файлопомойка на которой лежат все общие документы, инсталяхи, драйвера и тп. Такчто дополнительно решил зеркалить и туда содержимое папки с программой и обновлениями. Итак скрипт, который я соорудил:

#!/bin/bash
# Script for Sync BestZvit Updates
WORK_DIR="/opt/BZvitPlus"

lftp_sync () {
lftp -c 'open -e "mirror" ftp://ftp.bestzvit.com.ua/BZPLUS/'
wget -c -r -nd -l 1 -A exe http://www.bestzvit.com.ua/updates/zvitplus.shtml
}

sync_to_winshare () {
mountpoint -q /media/samba/winshare || mount.cifs //winshare/Install /media/samba/winshare -o credentials=/root/.pass
[ -d /media/samba/winshare/Buhgalteria/Zvit_Plus_PFU ] && rsync -ru --numeric-ids /opt/BZvitPlus/ /media/samba/winshare/Buhgalteria/Zvit_Plus_PFU
}

notify_mail () {
UPDATE=`find /opt/BZvitPlus/ -mtime -1`
DATE=`date +%F`
[[ -z ${UPDATE} ]] || echo -e ${UPDATE} |mail -s "[${DATE}] - PFU Update Available!" black
}

## <- Lets do it! -> ##
cd ${WORK_DIR}
lftp_sync
sync_to_winshare
notify_mail

Как видно, скрипт совсем несложный для понимания. Локальным хранилищем выбрана директория /opt/BZvitPlus Сначала просто переходим в нее, далее синкаем сюда содержимое ftp://ftp.bestzvit.com.ua/BZPLUS/ После этого проверяем примонтирована ли самбовая общая шара, если нет — монтируем. Для этого используются мои авторизационные данные которые описаны в файлике /root/.pass Содержимое этого файлика у меня такое:

black:~# cat .pass
username=WORK\black
password=my_password
black:~#

Потом rsync-ом синкаем нашу папку /opt/BZvitPlus/ на общую шару /media/samba/winshare/Buhgalteria/Zvit_Plus_PFU. И уведомлялка, если в директории /opt/BZvitPlus/ за последние сутки появилось чтото новое — уведомляем по email локального пользователя black (меня) об этом. Все!

Этот скрипт запускается раз в сутки, для этого добавил такую задачу в crontab:

black:~/scripts# crontab -l
SHELL=/bin/bash
# m h  dom mon dow   command
## <- Sync PFU Updates -> ##
13    4    *    *    *    /root/scripts/bzplus_sync.sh
black:~/scripts#

Ну и ко всему прочему — розшарил на своей машинке эту директорию по SAMBA (на всякий случай). Добавлю также что samba  у меня настроена на доменную авторизацию, о чем я писал ранее, и то что розшарена еще одна папка для решения подобной задачи с симантековскими обновлениями :) Итак, вот конфиг самба сервера:

black:~/scripts# cat /etc/samba/smb.conf
[global]
realm = MY.DOMAIN
workgroup = WORK
netbios name = black
security = ads
idmap uid = 10000-20000
idmap gid = 10000-20000
load printers = no
show add printer wizard = no
printing = none
printcap name = /dev/null
disable spoolss = Yes
show add printer wizard = No
template shell = /bin/bash
template homedir = /home/%D/%U
winbind use default domain = yes

[Symantec Updates]
comment = Symantec Offline Updates
path = /opt/symantec
browseable = yes
writable = no
valid users = @"WORK\domain admins", @"WORK\domain users"

[ARM Zvit]
comment = Setup and Update files
path = /opt/BZvitPlus
browseable = yes
writable = no
valid users = @"WORK\domain admins", @"WORK\domain users"
black:~/scripts#

Ну вот и все! В итоге получили на своей машине зеркало для обновлений и новых инсталях программы «АРМ — Звiт страхувальника». При появлении новых обновлений, шлем email мне! И также роздаем виндовозам всю эту папку по samba. Вот еще и скрин :)

Зеркало для АРМ Звiт Страхувальника - Роздаем по samba

Роздаем по samba

Вот как выглядят уведомления по почте:

Обновления "АРМ - Звiт Страхувальника" - Уведомление по почте.

Тут видим  тему письма. А вот что в самом письме:

АРМ Персонификация - Уведомление про обновления по почте

Видно что доступно новое обновление программы 8P_Upd893.exe

Со временем к уведомлению по email планирую добавить уведомлялку на десктоп средствами zenity.

Всем удачи и удачных отчетов по персонификации в придачу!

  1. Комментов пока нет

  1. Трэкбэков пока нет.

Why ask?