Создание зоны обновлений на UNIX сервере для Windows машин — различия между версиями

Материал из wiki.drweb.com
Перейти к: навигация, поиск
м
м
Строка 1: Строка 1:
{{Шаблон:attention|Корректность обновления компонентов антивируса, предложенная в данной статье не сильно высока, актуальность списка компонентов Вам придется поддерживать самостоятельно.}}
+
{{Шаблон:attention|Корректность обновления компонентов антивируса, предложенная в данной статье не сильно высока, актуальность списка компонентов Вам придется поддерживать самостоятельно.}}  
  
 
В статье рассмотрен способ создания зоны обновления антивируса Dr.Web на Linux для обновления windows-машин в локальной сети.
 
В статье рассмотрен способ создания зоны обновления антивируса Dr.Web на Linux для обновления windows-машин в локальной сети.

Версия 17:03, 31 января 2009

Attention.png

Внимание!
Корректность обновления компонентов антивируса, предложенная в данной статье не сильно высока, актуальность списка компонентов Вам придется поддерживать самостоятельно.

В статье рассмотрен способ создания зоны обновления антивируса 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>

Ссылки