Перейти к содержимому


Фото
- - - - -

Создание зеркала обновлений на Linux сервере для Windows машин


  • Please log in to reply
203 ответов в этой теме

#1 Jobsidi

Jobsidi

    Newbie

  • Posters
  • 3 Сообщений:

Отправлено 18 Январь 2009 - 15:44

Собственно такая задача: имеется 30 Windows-based машин, они выходят в сеть через шлюз, на котором стоит Debian.

Задача: сделать зеркало обновлений на шлюзе. 

Есть ли какие php\perl\etc-скриты для подобного? Можно, конечно, попробовать качнуть страницу wget-ом  http://download.drweb.com/bases/ , отпарсить на предмет наличия ссылок, например, http://download.drweb.com/bases/ , и опять скормить wget-у. Но, может, есть готовый вариант?

#2 Eugeny Gladkih

Eugeny Gladkih

    the Spirit of the Enlightenment

  • Dr.Web Staff
  • 5 295 Сообщений:

Отправлено 18 Январь 2009 - 18:22

Собственно такая задача: имеется 30 Windows-based машин, они выходят в сеть через шлюз, на котором стоит Debian.

Задача: сделать зеркало обновлений на шлюзе. 

Есть ли какие php\perl\etc-скриты для подобного? Можно, конечно, попробовать качнуть страницу wget-ом  http://download.drweb.com/bases/ , отпарсить на предмет наличия ссылок, например, http://download.drweb.com/bases/ , и опять скормить wget-у. Но, может, есть готовый вариант?


конечно есть готовый - Dr.Web Enterprise Suite

#3 Jobsidi

Jobsidi

    Newbie

  • Posters
  • 3 Сообщений:

Отправлено 18 Январь 2009 - 18:32

я не помню какие у нас куплены лицензии и чтобы быть уверенным наверняка, дополню: нужно бесплатное решение.
И еще: то что предлагается имеет слишком большой спектр возможностей для нас, он не нужен.

#4 Axel

Axel

    Member

  • Posters
  • 215 Сообщений:

Отправлено 18 Январь 2009 - 19:38

Есть ли какие php\perl\etc-скриты для подобного?


Скрипты-то конечно еть, у меня был на Питоне. Но готовое решение кроме ES вам врят ли дадут.
Вообще говоря, можно не мудрить с зоной обновлений, а сделать так: скачивать базы, выкладывать их в локалке, обновлять виндовые машины через ключ /URL для апдейтера + факультативное задание: хорошо бы обновлять не только базы, но и компоненты.

#5 pig

pig

    Бредогенератор

  • Helpers
  • 10 852 Сообщений:

Отправлено 18 Январь 2009 - 20:52

Когда-то был скрипт winupdate.pl, как раз под эту задачу. Может, у кого и сохранился.
Почтовый сервер Eserv тоже работает с Dr.Web

#6 Axel

Axel

    Member

  • Posters
  • 215 Сообщений:

Отправлено 18 Январь 2009 - 21:27

Когда-то был скрипт winupdate.pl, как раз под эту задачу. Может, у кого и сохранился.

может, у Черного.

а сделать так: скачивать базы, выкладывать их в локалке, обновлять виндовые машины через ключ /URL для апдейтера


Просьба сильно не пинать за скрипты, а помочь потестировать, кому интересно.

Вот, я тут покурил 15 мин. и выдал такое на перле для серверной части:

#!/usr/bin/perl -w
			 my $logdir = '/tmp/update';
			 my $basedir = '/tmp/update/500'; # папка, откуда обновляются виндовые агенты
												   # в эту папку надо также положить файл drweb32.lst
			 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);
			  }
			 }

Этот скрипт вставляем в cron на выполнение каждые 30 мин. unzip -o переписывает файлы (это надо для тудейки и перевыпуска баз). Можно еще поколдовать с параметрами wget чтобы там не качался всякий шлак.

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

DrWebUpW.exe /URL <UNC путь к папке $basedir>
Если я что-то забыл или перепутал, то поправьте меня пожалуйста.

#7 Konstantin Yudin

Konstantin Yudin

    Смотрящий

  • Dr.Web Staff
  • 19 552 Сообщений:

Отправлено 18 Январь 2009 - 22:44

проще взять update.pl из никсового ав пакета и немного докрутить.
With best regards, Konstantin Yudin
Doctor Web, Ltd.

#8 Konstantin Yudin

Konstantin Yudin

    Смотрящий

  • Dr.Web Staff
  • 19 552 Сообщений:

Отправлено 18 Январь 2009 - 22:46

Все ваши способы апгрейдят только базы, а это нельзя назвать зеркалом для винды. нужно обновлять моудули а их какчать можно только с офф. апдейтом вгетом с параметрами --header

кстати, а виндовый апдейтер под wine вроде работает (сканер пашет). никто не пробывал его юзать?
With best regards, Konstantin Yudin
Doctor Web, Ltd.

#9 Axel

Axel

    Member

  • Posters
  • 215 Сообщений:

Отправлено 19 Январь 2009 - 07:21

нужно обновлять моудули а их какчать можно только с офф. апдейтом вгетом с параметрами --header

вот:

нужно бесплатное решение

К тому же mkdrl.exe никто, я думаю, не выложит.

кстати, а виндовый апдейтер под wine вроде работает (сканер пашет). никто не пробывал его юзать?

работать-то он, может, и будет, но это решение не для сервера

#10 Konstantin Yudin

Konstantin Yudin

    Смотрящий

  • Dr.Web Staff
  • 19 552 Сообщений:

Отправлено 19 Январь 2009 - 13:58

нужно бесплатное решение

не заметил сразу. ну тогда задача сильно упрощается. апдейтить базы не сильно сложно. качать wget в цикле увеличивая номер в имени базы в режиме зеркала (ключ -N, вроде должен wget проверить по заголовку) пока не вернется что файла нет, и складывать в каталог. потом распаковывать все и заменять. Дима, дописывай скрипт :rolleyes:
With best regards, Konstantin Yudin
Doctor Web, Ltd.

#11 Axel

Axel

    Member

  • Posters
  • 215 Сообщений:

Отправлено 19 Январь 2009 - 20:16

качать wget в цикле увеличивая номер в имени базы в режиме зеркала (ключ -N, вроде должен wget проверить по заголовку)


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

#12 Jobsidi

Jobsidi

    Newbie

  • Posters
  • 3 Сообщений:

Отправлено 22 Январь 2009 - 21:31

спасибо всем за помощь, попробую.

#13 Axel

Axel

    Member

  • Posters
  • 215 Сообщений:

Отправлено 22 Январь 2009 - 21:57

Jobsidi, отпишитесь потом. Будет время на выходных сделаю с обновлением компонентов

#14 Konstantin Yudin

Konstantin Yudin

    Смотрящий

  • Dr.Web Staff
  • 19 552 Сообщений:

Отправлено 23 Январь 2009 - 15:31

Jobsidi, отпишитесь потом. Будет время на выходных сделаю с обновлением компонентов

с хешем своего ключа в скрипте? http://forum.drweb.com/public/style_emoticons/default/laugh.png
With best regards, Konstantin Yudin
Doctor Web, Ltd.

#15 Axel

Axel

    Member

  • Posters
  • 215 Сообщений:

Отправлено 24 Январь 2009 - 10:24

Будет время на выходных сделаю с обновлением компонентов


Вторая серия. Она оказалась более интересной.

#!/usr/bin/perl -w
use Digest&#58;&#58;MD5;
my $logdir = &#39;/tmp/update&#39;;
my $basedir = &#39;/tmp/update/500&#39;; # папка, откуда обновляются виндовые агенты
my $drwebkey = &#39;/tmp/update/drweb32-betatesting.key&#39;; # путь к ключу drweb
# обновление баз и движков
system &#40;&#39;wget -P &#39;.$logdir.&#39; -r -l1 -nd -np http&#58;//msk3.drweb.com/pub/drweb/bases&#39;&#41;;
opendir &#40;DIR, $logdir&#41;;
my @files=readdir &#40;DIR&#41;;
closedir &#40;DIR&#41;;
foreach my $file &#40;@files&#41;{
 if &#40;$file =~ /zip/&#41;{
   system &#40;&#39;unzip -o &#39;.$logdir.&#39;/&#39;.$file.&#39; -d &#39;.$basedir&#41;;
 }
}
# обновление компонентов
open&#40;FILE, $drwebkey&#41; or die &#34;Can&#39;t open &#39;$drwebkey&#39;&#58; $!&#34;;
binmode&#40;FILE&#41;;
my $md5 =  Digest&#58;&#58;MD5->new->addfile&#40;*FILE&#41;->hexdigest;
my @components = qw&#40;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&#41;;
foreach my $component &#40;@components&#41; {
system &#40;&#39;wget -O &#39;.$basedir.&#39;/&#39;.$component.
        &#39; -l 0&#39;. 
        &#39; --header=&#34;X-DrWeb-Validate&#58;&#39;.$md5.&#39;&#34;&#39;.
        &#39; http&#58;//update.drweb.com/500/windows/&#39;.$component&#41;;
}
opendir &#40;C_DIR, $basedir&#41;;
my @c_files=readdir &#40;C_DIR&#41;;
closedir &#40;C_DIR&#41;;
foreach my $c_file &#40;@c_files&#41;{
    if &#40;&#40;-s $basedir.&#39;/&#39;.$c_file&#41; eq 0&#41;{
       unlink &#40;$basedir.&#39;/&#39;.$c_file&#41;
 }
}

При написании заметил очень странную вещь:
Response 500 Internal Server Error при использовании timestamping в wget,


Замечание: тут не обновляются базы род. контроля. FR0025177

Кстати, update.pl докручивать гораздо муторнее.

#16 QuAzI

QuAzI

    Newbie

  • Posters
  • 13 Сообщений:

Отправлено 01 Апрель 2009 - 23:42

В общем то на антивирусах я особо не заморачивался, у самого стоит FreeBSD, так что вирей активных нет. Но вот пришёл чел, попросил сделать в локалке зеркало для обновлений и понеслось...
Почитал тут, почитал в wiki, погуглил.
Сначала делал чистое зеркало баз данных, синхронизировал с помощью lftp. Сегодня докорябал скрипт на perl, который выкачивает drweb32.lst и сверяет хеши у имеющихся баз. Если хеши не совпадают, перекачивает файл заново. И всё вроде хорошо, работает, но...
На файле dwntoday.vdb и некоторых других today получаю 451 access denied. Все остальные vdb и бинарники качаются на ура. В таком случае я совершенно непонимаю, как правильно обновлять базы и как это делает их утилита.
Скрипт в аттаче. Версия DrWeb у юзверя 444. Кстати после обновления и перезагрузки значёк в трее стал помеченным красным крестиком. Ещё не разбирался почему, но как-то напрягает такое "обновление".
А ещё почему-то хеш CRC32 безумно медленно считается :) на дайлапе базы обновлять нереально. Хеш одного файла может рассчитываться 2-3 минуты.

Прикрепленные файлы:

  • Прикрепленный файл  dre.txt   3,44К   107 Скачано раз

Сообщение было изменено QuAzI: 01 Апрель 2009 - 23:58


#17 ILNARus

ILNARus

    Advanced Member

  • Posters
  • 636 Сообщений:

Отправлено 02 Апрель 2009 - 07:37

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

#18 QuAzI

QuAzI

    Newbie

  • Posters
  • 13 Сообщений:

Отправлено 02 Апрель 2009 - 07:53

Ну, для разнообразия у меня нет лишнего компа, чтобы на нём поднять виндовый хост. Да и винду лично у меня поднимать желания давно уже нет.
И хотелось бы всё же узнать, почему у виндового апдейтера проблем с закачкой dwntoday.vdb например нет, а у скрипта который выкачивает всё остальное, вплоть до chm и wav вот именно три файла не выкачиваются: drwtoday, dwntoday, dwrtoday.
Не увиливайте от сабжа - зеркало обновлений на LINUX, а не на винде.

#19 Eugeny Gladkih

Eugeny Gladkih

    the Spirit of the Enlightenment

  • Dr.Web Staff
  • 5 295 Сообщений:

Отправлено 02 Апрель 2009 - 10:34

А ещё почему-то хеш CRC32 безумно медленно считается :P на дайлапе базы обновлять нереально. Хеш одного файла может рассчитываться 2-3 минуты.


значит так написали :) в реальной жизни он считается со скоростью считывания данных с диска

#20 pig

pig

    Бредогенератор

  • Helpers
  • 10 852 Сообщений:

Отправлено 02 Апрель 2009 - 10:40

Hint: авторизация по ключу.
Не хотите посмотреть update.pl из линуксовых дистрибутивов Доктора?
Почтовый сервер Eserv тоже работает с Dr.Web


Читают тему: 0

0 пользователей, 0 гостей, 0 скрытых