Создание зоны обновлений на UNIX сервере для Windows машин — различия между версиями
John (обсуждение | вклад) м |
John (обсуждение | вклад) м |
||
Строка 1: | Строка 1: | ||
+ | {{Шаблон:attention|Корректность обновления компонентов антивируса, предложенная в данной статье не сильно высока, актуальность списка компонентов Вам придется поддерживать самостоятельно.}} | ||
+ | |||
В статье рассмотрен способ создания зоны обновления антивируса Dr.Web на Linux для обновления windows-машин в локальной сети. | В статье рассмотрен способ создания зоны обновления антивируса Dr.Web на Linux для обновления windows-машин в локальной сети. | ||
Версия 17:00, 31 января 2009
В статье рассмотрен способ создания зоны обновления антивируса Dr.Web на Linux для обновления windows-машин в локальной сети.
Замечание: данный способ не позволяет обновить базы родительского контроля. Feature request в баг-трекере:0025177
Введение
Антивирус Dr.Web обновляется при помощи программы DrWebUpW.exe, которая находится в каталоге %programfiles%\DrWeb. При запуске DrWebUpW читает последовательно файлы custom.drl и update.drl, лежащие с ним в одной папке. В этих файлах прописаны зоны обновления Dr.Web. Затем программа обновления скачивает с первой доступной зоны файл drweb32.lst, в котором хранятся хэши, расположение и команды установки всех файлов для обновления. Также необходимо знать, что существует ряд серверов, на которых Dr.Web выкладывает в свободном доступе антивирусные базы и движки, например, http://new-download.drweb.com/bases.
Скрипт
Скрипт, написанный на языке Perl, позволяет обновлять базы, движки и компоненты Dr.Web. Для обновления компонентов необходим действующий лицензионный ключевой файл от любого продукта Dr.Web. Компоненты, необходимые для обновления, можно указать в массиве @components
#!/usr/bin/perl -w use Digest::MD5; my $logdir = '/tmp/update'; my $basedir = '/tmp/update/500'; # папка, откуда обновляются виндовые агенты my $drwebkey = '/tmp/update/drweb32-betatesting.key'; # путь к ключу drweb # обновление баз и движков system ('wget -P '.$logdir.' -r -l1 -nd -np http://msk3.drweb.com/pub/drweb/bases'); opendir (DIR, $logdir); my @files=readdir (DIR); closedir (DIR); foreach my $file (@files){ if ($file =~ /zip/){ system ('unzip -o '.$logdir.'/'.$file.' -d '.$basedir); } } # обновление компонентов open(FILE, $drwebkey) or die "Can't open '$drwebkey': $!"; binmode(FILE); my $md5 = Digest::MD5->new->addfile(*FILE)->hexdigest; my @components = qw(drweb32.lst update.drl drwebupw.exe dwshield.sys spiderui.dll drwebnet.sys drwspcnt.dll spider.cpl drwspcnt.dll dwprot.sys dwprot.dll dwengine.exe dwinctl.dll spideragent.exe spideragent_set.exe drweb32w.exe drwebwcl.exe spidergate.exe spidergate_set.exe spidernt.exe spiderui.exe spidercpl.exe spider.sys spiderml.exe spml_set.exe drwebsp.dll drwreg.exe); foreach my $component (@components) { system ('wget -O '.$basedir.'/'.$component. ' -l 0'. ' --header="X-DrWeb-Validate:'.$md5.'"'. ' http://update.drweb.com/500/windows/'.$component); } opendir (C_DIR, $basedir); my @c_files=readdir (C_DIR); closedir (C_DIR); foreach my $c_file (@c_files){ if ((-s $basedir.'/'.$c_file) eq 0){ unlink ($basedir.'/'.$c_file) } }
Crontab
Теперь добавим задание в crontab, выполнив команду crontab -e:
# drweb update 0 */1 * * * /home/user/drwebupw.pl
Обновление windows-машин
DrWebUpW.exe /URL <UNC путь к папке $basedir>