Создание зеркала сервера обновления антивируса Касперского

Обсуждаем сайт и форум.

Модератор: f0s

Yanis
рядовой
Сообщения: 23
Зарегистрирован: 2008-08-15 16:53:36

Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение Yanis » 2008-08-15 17:38:10

Сейчас я наблюдаю очередной наплыв установок Касперского и появилась проблема экономии трафика, особенно когда программа устанавливается на всю сеть с базами годичной давности, а "установщики" не любят с собой носить кумулятивные обновления и ставят на всех компах обновление с инета...

Нашлось очень интересное решение (прочитайте его для лучшего понимания ниженаписанного), но оно не везде подходит:
1. В некоторых сетях нет виндового компьютера, постоянно включенного и подключенного к Интернету
2. Выделенную для сервера обновлений машину-рабочую станцию иногда отключают надолго (на время отпуска, бывает и так)
3. Мне не понравилось, что wget -timestamping иногда некорректно работает - качает все файлы подряд

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

Пришлось сесть и написать скрипт на обычном юниксовом шелле:

Код: Выделить всё

#!/bin/sh

dir='/usr/local/www/kav_update/'
server='http://dnl-ru2.kaspersky-labs.com/'
components="BLST AHI386 AVS"

xml="/usr/local/bin/xml"
subdir='index/6'
mkdir -p ${dir}${subdir}
cd ${dir}${subdir}
fetch ${server}${subdir}/u0607g.xml
grep -v "^;" u0607g.xml > u0607g.xml.temp

for component in $components
do
        stt=${xml}" sel -t -m "//FileDescription[@ComponentID=\'${component}\']" -v @ServerFolder -n u0607g.xml.temp"
        path2=`${stt}`
        mkdir -p ${path2}

        stt=${xml}" sel -t -m "//FileDescription[@ComponentID=\'${component}\']" -v @Filename -n u0607g.xml.temp"
        fname=`${stt}`
        cd ${path2}
        fetch ${server}${subdir}/${path2}/${fname}

        grep -v "^;" ${fname} > ${fname}.temp
        stt=${xml}" sel -t -m "//FileDescription[@ComponentID=\'${component}\']" -v @Filename -n "${fname}.temp
        files=`${stt}`
        for file in $files
        do
                if [ -s ${file} ]
                then
                        size=`ls -l ${file} | awk '{print $5}'`
                        stt=${xml}" sel -t -m "//FileDescription[@Filename=\'${file}\']" -v @FileSize -n "${fname}.temp
                        sizeneed=`${stt}`
                        if [ "${size}" != "${sizeneed}" ]
                        then
                                fetch ${server}${subdir}/${path2}/${file}
                        fi
                else
                        fetch ${server}${subdir}/${path2}/${file}
                fi
        done
        rm ${fname}.temp

        cd -
done

rm u0607g.xml.temp
Для работы этого скрипта дополнительно требуется установить xmlstarlet (/usr/ports/textproc/xmlstarlet во FreeBSD).
Установка веб-сервера - это отдельная тема для разговора, конечно он должен работать.
Путь к корневой папке сервера нужно указать в переменной скрипта dir
Переменная server указывает, с какого сервера Касперского нужно качать обновления.
Переменная components - список компонентов для скачивания, разделенный пробелами. index/6/u0607g.xml

Хотелось бы:
1. Переписать этот скрипт на Перле (там же есть встроенная поддержка xml?), чтобы не устанавливать xmlstarlet
2. Узнать, как fetch заставить качать только обновленные файлы (я хочу максимально обойтись встроенными средствами). Дело в том, что скрипт читает из xml атрибут или как там оно называется Filesize, но этот атрибут проставлен не во всех файлах. Следовательно, такие файлы будут качаться каждый раз полностью. Радует то, что в папке с собственно обновлениями размер файла указан - а это основной объем
3. Выслушать кучу дельных замечаний и комментариев.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение zg » 2008-08-17 7:23:27

Yanis писал(а):Узнать, как fetch заставить качать только обновленные файлы
я использую wget -S --spider, для получения заголовков, и если длина удалённого файла отличная от локального, то качаю. Правда для оптимизации придумал простенький скрипт, который на удалённом сервере подготавливает список файлов с их размерами, чтоб двадцать запросов лишних не делать. Если у каспера можно получить подбынй список, то обязательно нужно юзать его. Дополнительно ещё распаралеллил закачки, чтобы минимизировать время загрузки, но думаю тут это не актуально :smile:

Аватара пользователя
manefesto
Группенфюррер
Сообщения: 6934
Зарегистрирован: 2007-07-20 8:27:30
Откуда: Пермь
Контактная информация:

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение manefesto » 2008-08-21 14:24:02

ну я умею писать на перле
Нада переписать ?
я такой яростный шо аж пиздеЦ
Изображение

Yanis
рядовой
Сообщения: 23
Зарегистрирован: 2008-08-15 16:53:36

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение Yanis » 2008-08-21 16:16:11

Надо, только чуть позже - этот скрипт некорректно качает патчи программы, если сегодня свет будет нормально работать - обновлю...

Аватара пользователя
Pez!
старшина
Сообщения: 436
Зарегистрирован: 2008-01-13 20:02:24
Откуда: москва матушка

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение Pez! » 2008-09-04 11:28:22

Приветствую, хотелось бы поинтересоваться как успехи с этим скриптом, ибо тоже очень хочеться замутить обновлялку касперского в локалке.
Всёравно все умрут, какая разница....и только серваки с фряхой будут работать ещё некоторое время после.

Yanis
рядовой
Сообщения: 23
Зарегистрирован: 2008-08-15 16:53:36

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение Yanis » 2008-09-04 22:10:21

Уже неделю+ не трогал - некогда, вообще - работает, но не всегда корректно, приходится то один, то другой файлик руками качать и в папочку класть...
Добью скоро.

Аватара пользователя
Pez!
старшина
Сообщения: 436
Зарегистрирован: 2008-01-13 20:02:24
Откуда: москва матушка

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение Pez! » 2008-09-11 18:23:12

Спасибо, буду с нетерпением ждать ибо уж больно много юзают этого касперского :cz2:
Всёравно все умрут, какая разница....и только серваки с фряхой будут работать ещё некоторое время после.


Yanis
рядовой
Сообщения: 23
Зарегистрирован: 2008-08-15 16:53:36

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение Yanis » 2008-09-23 21:09:31

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

Код: Выделить всё

#!/bin/sh

dir='/usr/local/www/kav_update/'
server='http://dnl-ru2.kaspersky-labs.com/'
components="BLST AHI386 AH AHX64 ADB,AP AVS EMUI386 INFO KAS300 AS,PAS,ASTRM PCDB RM,BB,BB2 RT,RTAK7 Updater WAI386 WM KAV2006EXEC KAV6WSEE KAV_AQARS KAV_ASUS KAV_AVLS KAV_BRK,KIS_BRK KAV_DEL KAV_DT KAV_GIGB KAV_INB KAV_IOMART KAV_KNSS,KIS_KNSS,WKS_KNSS KAV_KPSS KAV_MAIS,KIS_MAIS KAV_NEO KAV_PCSS,KIS_PCSS KAV_PSTV KAV_RSS KAV_STG,KIS_STG KAV_VSNL,KIS_VSNL KAV_WHIZ KAV_XSS"

xml="/usr/local/bin/xml"
wget="/usr/local/bin/wget"

subdir='index/6'
mkdir -p ${dir}${subdir}
cd ${dir}${subdir}
fetch ${server}${subdir}/u0607g.xml
grep -v "^;" u0607g.xml > u0607g.xml.temp

for component in $components
do
	stt=${xml}" sel -t -m "//FileDescription[@ComponentID=\'${component}\']" -v @ServerFolder -n u0607g.xml.temp"
	path2=`${stt}`
	mkdir -p ${path2}

	stt=${xml}" sel -t -m "//FileDescription[@ComponentID=\'${component}\']" -v @Filename -n u0607g.xml.temp"
	fname=`${stt}`
	cd ${path2}
	fetch ${server}${subdir}/${path2}/${fname}

	grep -v "^;" ${fname} > ${fname}.temp
	stt=${xml}" sel -t -m "//FileDescription[@ComponentID=\'${component}\']" -v @Filename -n "${fname}.temp
	files=`${stt}`

	for file in $files
	do
		stt=${xml}" sel -t -m "//FileDescription[@Filename=\'${file}\']" -v @ServerFolder -n "${fname}.temp
		sfolders=`${stt}`
		if [ "${sfolders}" != "" ]
		then
			sfolders=`echo ${sfolders} | tr '\' '/'`
			for sfolder in ${sfolders}
			do
				mkdir -p ${sfolder}
		                if [ -s ${sfolder}/${file} ]
                		then
		                        size=`ls -l ${sfolder}/${file} | awk '{print $5}'`
                		        stt=${xml}" sel -t -m "//FileDescription[@Filename=\'${file}\']" -v @FileSize -n "${fname}.temp
		                        sizeneed=`${stt}`
                		        if [ "${size}" != "${sizeneed}" ]
		                        then
                                		${wget} --no-verbose --no-proxy --directory-prefix="${sfolder}" --timestamp ${server}${subdir}/${path2}/${sfolder}/${file}
                		        fi
		                else
                		        ${wget} --no-verbose --no-proxy --directory-prefix="${sfolder}" --timestamp ${server}${subdir}/${path2}/${sfolder}/${file}
		                fi
			done
		else
			if [ -s ${file} ]
			then
				size=`ls -l ${file} | awk '{print $5}'`
				stt=${xml}" sel -t -m "//FileDescription[@Filename=\'${file}\']" -v @FileSize -n "${fname}.temp
				sizeneed=`${stt}`
				if [ "${size}" != "${sizeneed}" ]
				then
					${wget} --no-verbose --no-proxy --timestamp ${server}${subdir}/${path2}/${file}
				fi
			else
				${wget} --no-verbose --no-proxy --timestamp ${server}${subdir}/${path2}/${file}
			fi
		fi
	done
	rm ${fname}.temp

	cd ${dir}${subdir}
done

rm u0607g.xml.temp

a_max
проходил мимо

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение a_max » 2008-10-02 10:19:31

Хм... А я просто lftp вот с таким файликом "скриптом" гоняю:

Код: Выделить всё

open ftp.avp.ru

echo *** index
mirror -epn --delete-first --parallel=10 --loop -X *.klz -X *.dif /index /home/ftp/index
echo *** AutoPatches
mirror -epn --delete-first --parallel=10 --loop -X *.klz -X *.dif /AutoPatches /home/ftp/AutoPatches
echo *** bases
mirror -epn --delete-first --parallel=10 --loop -X *.klz -X *.dif /bases/as /home/ftp/bases
Ну точнее я разбил его ещё по папкам и запускаю параллельно, чтобы канал по полной забить и быстрее скачать всё.

Yanis
рядовой
Сообщения: 23
Зарегистрирован: 2008-08-15 16:53:36

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение Yanis » 2008-10-02 14:29:31

a_max писал(а):А я просто lftp вот с таким файликом "скриптом" гоняю
Можно и так, но ты список компонентов выбрать не можешь

rambomax
ефрейтор
Сообщения: 51
Зарегистрирован: 2007-12-06 13:57:20

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение rambomax » 2008-10-16 14:40:43

Мое решение задачи основано на том, что на ftp-сайте касперского выкладываются файлы архивов обновлений. Их всего три - кумулятивный, еженедельный, ежедневный.
Поэтому мой алгоритм прост: скачиваю эти файлы если они на сервере касперского новее, чем мои и раскрываю в папку, которую раздаю самбой в сеть. Итого получается очень редко скачивается кумулятивное обновление, раз в неделю (на всякий случай, а случаи бывают разные) еженедельное обновление и каждый день ежедневное. Потом раскрываю архивы. Почему-то так получается, что если просто копить ежедневные обновления, то иногда где-то бывает сбой и обновление встает. Раскрытие архивов в очередности - все - неделя - день всегда приводит к отличному результату. Также я не скачиваю ежедневные обновления в субботу и воскресенье (в понедельник они накроются еженедельным обновленеием).
Весь алгоритм реализован тривиальным скриптом, который запускается ночью кроном.
На клиентах ставлю опцию "обновляться из каталога", где указываю сетевой каталог обновлений.
Сами архивы обновлений выкладываю на свой локальный ФТП, с которого кроном скачивают сервера удаленных офисов (пиринговый трафик у нас бесплатный). Т.е. в скрипте удаленных офисов в качестве сервера обновлений указан мой локальный ФТП.
Таким образом обновляю несколько десятков компов уже больше года.

Код: Выделить всё

AVURL=ftp://downloads1.kaspersky-labs.com/zips/
AVPDIR=/var/samba/share/Avp
FTPDIR=/var/ftp/anonymous/Avp
WGET=/usr/local/bin/wget
UZIP=/usr/local/bin/unzip


cd $AVPDIR
/bin/rm -f *

cd "$FTPDIR"

$WGET -N $AVURL/av-i386-cumul.zip
$UZIP -t av-i386-cumul.zip
if [ $? -ne 0 ]
then
    rm av-i386-cumul.zip
else
    $UZIP -o av-i386-cumul.zip  -d "$AVPDIR"
fi

$WGET -N $AVURL/av-i386-weekly.zip
$UZIP -t av-i386-weekly.zip
if [ $? -ne 0 ]
then
    rm av-i386-weekly.zip
else
    $UZIP -o av-i386-weekly.zip -d "$AVPDIR"
fi

$WGET -N $AVURL/av-i386-daily.zip
$UZIP -t av-i386-daily.zip
if [ $? -ne 0 ]
then
    rm av-i386-daily.zip
else
    $UZIP -o av-i386-daily.zip  -d "$AVPDIR"
fi

/bin/chmod -R 777 "$FTPDIR"
/bin/chmod -R 777 "$AVPDIR"


Yanis
рядовой
Сообщения: 23
Зарегистрирован: 2008-08-15 16:53:36

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение Yanis » 2008-10-16 16:26:50

Нашелся еще один способ, улыбайтесь )
В Касперском Настройка -> Обновление -> Настройка -> Дополнительно -> Копировать в папку
Расшариваете эту папку, а остальных клиентов натравливаете на нее.

Единственное - я не уверен, что все версии КАВа умеют сохранять в папку обновления...

ZIMMER
проходил мимо
Сообщения: 1
Зарегистрирован: 2008-05-30 9:21:16

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение ZIMMER » 2008-10-23 13:21:15

ставим из портов перловый /usr/ports/ftp/ftpsync

потом ставим в крон
ftpsync.pl -vg /KAV ftp://ftp.avp.ru//

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

d0dger
проходил мимо

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение d0dger » 2008-10-25 11:15:01

Подскажите, пожалуйста, какую папку или папки надо выкачивать для организации обновления KAV2009, KIS2009. Может можно сразу для 6,7,8 версий сделать одну папку обновлений. Скрипт пишу на php, в nix-скриптах ничего не понимаю)

Yanis
рядовой
Сообщения: 23
Зарегистрирован: 2008-08-15 16:53:36

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение Yanis » 2008-10-25 19:26:55

d0dger писал(а):в nix-скриптах ничего не понимаю
А я не понимаю группировку по компонентам, в простейшем случае можно
1. Качать весь фтп
2. Читать XML и качать все перечисленные в нем компоненты
3. Поставить KAV2009, KIS2009 и качать только нужные им компоненты (читай ссылку в моем первом посте)


Yanis
рядовой
Сообщения: 23
Зарегистрирован: 2008-08-15 16:53:36

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение Yanis » 2008-11-12 18:47:13

Не-а, не подскажу, может другой сервер попробовать?

Tyler
проходил мимо

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение Tyler » 2009-02-15 15:45:11

При зеркалировании фтп появлеятся проблема с синхронизацией.
Может кому-то пригодится. Набросал небольшой скриптик. Использованый материал http://www.opennet.ru/base/sys/ka_update.txt.html
В $work_dir прописываем каталог куда сохраняются бызы.
С 5 часов до 7 скрипт не работает чтобы не попасть на время вылаживания на сервере.
Пописываем в cron время запуска.

Код: Выделить всё

#!/usr/bin/perl -w
use Switch;
use Time::Local;

########Setings#######################
$work_dir="/usr/local/www/data/kav";
######################################

scalar(localtime(time())) =~ /^(\w{3})\s\w{3}\s\d{2}\s(\d{2}):(\d{2}):\d{2}\s\d{4}$/is;
$cur_day_week=$1;
$cur_chas=$2;
$cur_min=$3;

switch($cur_day_week){
case 'Mon' { $data1=(17*60+$cur_chas*60+$cur_min); $data2=($data1+7*24*60); }
case 'Tue' { $data1=(17*60+1*24*60+$cur_chas*60+$cur_min); $data2=($data1+7*24*60); }
case 'Wed' { $data1=(17*60+2*24*60+$cur_chas*60+$cur_min); $data2=($data1+7*24*60); }
case 'Thu' { $data1=(17*60+3*24*60+$cur_chas*60+$cur_min); $data2=($data1+7*24*60); }
case 'Fri' { $data1=(17*60+4*24*60+$cur_chas*60+$cur_min); $data2=($data1+7*24*60); }
case 'Sat' { $data1=(17*60+5*24*60+$cur_chas*60+$cur_min); $data2=($data1+7*24*60); }
case 'Sun' { $data0=($cur_chas*60+$cur_min);
  if ($data0 <= 5*60)
  {
    $data1=(17*60+6*24*60+$cur_chas*60+$cur_min);
    $data2=($data1+7*24*60);
  }
  if ($data0 > 5*60 && $data0 <= 7*60)
  {
    print "в текущее время обновления не обслуживаются\n";
    exit;
  }
  if ($data0 > 7*60)
  {
    $data1=($cur_chas*60+$cur_min-7*60);
    $data2=($data1+7*24*60);
  }
}
else { exit; }
}

$test_file=$work_dir."/test.txt";
open(FIL1,"> $test_file") or die "установите права на запись в директорию ".$work_dir."\n";
print FIL1 "test";
close(FIL1);

open (FIL2, "avp7.log")  or die
"ошибка открытия файла avp7.log \nсоздайте файл avp7.log в текущей директории \nи установите права на запись\n";
$stroka = <FIL2>;
close (FIL2);
if ($stroka =~ /^(\d{10})$/is)
{
$update_time=$1;
$update_time_min=(time()-$update_time)/60;
if ($update_time_min <= $data1)
{
print scalar(localtime(time()))." Start download day updates\n";
system("cd /tmp; \
rm /tmp/av-i386-daily.zip; \
wget  http://downloads.kaspersky-labs.com/zips/av-i386-daily.zip; \
unzip -o /tmp/av-i386-daily.zip -d $work_dir/; \
chmod 0644 $work_dir/*;");
print scalar(localtime(time()))." Finish download day updates\n";
}
if (($update_time_min > $data1) && ($update_time_min <= $data2))
{
print scalar(localtime(time()))." Start download weekly and day updates\n";
system("cd /tmp; \
rm /tmp/av-i386-weekly.zip; \
wget  http://downloads.kaspersky-labs.com/zips/av-i386-weekly.zip; \
unzip -o /tmp/av-i386-weekly.zip -d $work_dir/; \
rm /tmp/av-i386-daily.zip; \
wget  http://downloads.kaspersky-labs.com/zips/av-i386-daily.zip; \
unzip -o /tmp/av-i386-daily.zip -d $work_dir/; \
chmod 0644 $work_dir/*;");
print "обновляем время в логе\n";
open(FIL2,"> avp7.log") or die
"ошибка открытия файла avp7.log \nсоздайте файл avp7.log в текущей директории \nи установите права на запись\n";
print FIL2 time();
close(FIL2);
print scalar(localtime(time()))." Finish download weekly and day updates\n";
}
if ($update_time_min > $data2)
{
print scalar(localtime(time()))."Start download full and day updates\n";
system(" \
#rm -R $work_dir/*; \
cd /tmp; \
rm /tmp/av-i386-cumul.zip; \
wget  http://downloads.kaspersky-labs.com/zips/av-i386-cumul.zip; \
unzip -o /tmp/av-i386-cumul.zip -d $work_dir/; \
rm /tmp/av-i386-daily.zip; \
wget  http://downloads.kaspersky-labs.com/zips/av-i386-daily.zip; \
unzip -o /tmp/av-i386-daily.zip -d $work_dir/; \
chmod 0644 $work_dir/*;");
print "обновляем время в логе\n";
open(FIL2,"> avp7.log") or die
"ошибка открытия файла avp7.log \nсоздайте файл avp7.log в текущей директории \nи установите права на запись\n";
print FIL2 time();
close(FIL2);
print scalar(localtime(time()))." Finish download full and day updates\n";
}
}
else
{
print scalar(localtime(time()))."Start download full and day updates\n";
system(" \
#rm -R $work_dir/*; \
cd /tmp; \
rm /tmp/av-i386-cumul.zip; \
wget  http://downloads.kaspersky-labs.com/zips/av-i386-cumul.zip; \
unzip -o /tmp/av-i386-cumul.zip -d $work_dir/; \
rm /tmp/av-i386-daily.zip; \
wget  http://downloads.kaspersky-labs.com/zips/av-i386-daily.zip; \
unzip -o /tmp/av-i386-daily.zip -d $work_dir/; \
chmod 0644 $work_dir/*;");
print "обновляем время в логе\n";
open(FIL2,"> avp7.log") or die
"ошибка открытия файла avp7.log \nсоздайте файл avp7.log в текущей директории \nи установите права на запись\n";
print FIL2 time();
close(FIL2);
print scalar(localtime(time()))." Finish download full and day updates\n";
}

factor
ефрейтор
Сообщения: 65
Зарегистрирован: 2008-02-05 16:36:26
Откуда: Омск
Контактная информация:

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение factor » 2009-02-15 16:43:11

Yanis писал(а):Вот отдаю на бета-тестирование, вроде работает...
Код местами ужасен, извините, такой вот высер получился, его перечитать надо бы

Код: Выделить всё

#!/bin/sh

dir='/usr/local/www/kav_update/'
server='http://dnl-ru2.kaspersky-labs.com/'
components="BLST AHI386 AH AHX64 ADB,AP AVS EMUI386 INFO KAS300 AS,PAS,ASTRM PCDB RM,BB,BB2 RT,RTAK7 Updater WAI386 WM KAV2006EXEC KAV6WSEE KAV_AQARS KAV_ASUS KAV_AVLS KAV_BRK,KIS_BRK KAV_DEL KAV_DT KAV_GIGB KAV_INB KAV_IOMART KAV_KNSS,KIS_KNSS,WKS_KNSS KAV_KPSS KAV_MAIS,KIS_MAIS KAV_NEO KAV_PCSS,KIS_PCSS KAV_PSTV KAV_RSS KAV_STG,KIS_STG KAV_VSNL,KIS_VSNL KAV_WHIZ KAV_XSS"

xml="/usr/local/bin/xml"
wget="/usr/local/bin/wget"

subdir='index/6'
mkdir -p ${dir}${subdir}
cd ${dir}${subdir}
fetch ${server}${subdir}/u0607g.xml
grep -v "^;" u0607g.xml > u0607g.xml.temp

for component in $components
do
	stt=${xml}" sel -t -m "//FileDescription[@ComponentID=\'${component}\']" -v @ServerFolder -n u0607g.xml.temp"
	path2=`${stt}`
	mkdir -p ${path2}

	stt=${xml}" sel -t -m "//FileDescription[@ComponentID=\'${component}\']" -v @Filename -n u0607g.xml.temp"
	fname=`${stt}`
	cd ${path2}
	fetch ${server}${subdir}/${path2}/${fname}

	grep -v "^;" ${fname} > ${fname}.temp
	stt=${xml}" sel -t -m "//FileDescription[@ComponentID=\'${component}\']" -v @Filename -n "${fname}.temp
	files=`${stt}`

	for file in $files
	do
		stt=${xml}" sel -t -m "//FileDescription[@Filename=\'${file}\']" -v @ServerFolder -n "${fname}.temp
		sfolders=`${stt}`
		if [ "${sfolders}" != "" ]
		then
			sfolders=`echo ${sfolders} | tr '\' '/'`
			for sfolder in ${sfolders}
			do
				mkdir -p ${sfolder}
		                if [ -s ${sfolder}/${file} ]
                		then
		                        size=`ls -l ${sfolder}/${file} | awk '{print $5}'`
                		        stt=${xml}" sel -t -m "//FileDescription[@Filename=\'${file}\']" -v @FileSize -n "${fname}.temp
		                        sizeneed=`${stt}`
                		        if [ "${size}" != "${sizeneed}" ]
		                        then
                                		${wget} --no-verbose --no-proxy --directory-prefix="${sfolder}" --timestamp ${server}${subdir}/${path2}/${sfolder}/${file}
                		        fi
		                else
                		        ${wget} --no-verbose --no-proxy --directory-prefix="${sfolder}" --timestamp ${server}${subdir}/${path2}/${sfolder}/${file}
		                fi
			done
		else
			if [ -s ${file} ]
			then
				size=`ls -l ${file} | awk '{print $5}'`
				stt=${xml}" sel -t -m "//FileDescription[@Filename=\'${file}\']" -v @FileSize -n "${fname}.temp
				sizeneed=`${stt}`
				if [ "${size}" != "${sizeneed}" ]
				then
					${wget} --no-verbose --no-proxy --timestamp ${server}${subdir}/${path2}/${file}
				fi
			else
				${wget} --no-verbose --no-proxy --timestamp ${server}${subdir}/${path2}/${file}
			fi
		fi
	done
	rm ${fname}.temp

	cd ${dir}${subdir}
done

rm u0607g.xml.temp

Доружище не работает выдает такое

./kav
u0607g.xml 100% of 27 kB 31 kBps
./kav: 32: Syntax error: word unexpected

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение zingel » 2009-02-16 9:07:42

Код: Выделить всё

sh -x ./kav
Z301171463546 - можно пожертвовать мне денег


Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение thefree » 2009-03-30 12:12:11

не делайте велосипед ...

http://forum.kaspersky.com/index.php?showtopic=107078

Код: Выделить всё

# cd /usr/ports/misc/compat6x && make install clean
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Аватара пользователя
freeman
лейтенант
Сообщения: 734
Зарегистрирован: 2007-03-18 5:13:25

Re: Создание зеркала сервера обновления антивируса Касперского

Непрочитанное сообщение freeman » 2009-04-08 16:23:56

1. "Велосипеда" раньше не было.
2. велосипед то пока beta
3. попользовался велосипедом версии 5.0.0.4 и получил вирус эпидемию :) И ладно бы всразу и громко глючило. А то "по тихому" возвращали клиенты что обновление завершено, а в логах у них не совпадала цифровая подпись одного файла, соотв. "обновлениы не все компоненты" и почему то дата обновления баз оставалась старой (откат обновления видимо).
Хз у кого руки кривые, но пока вернулся к своему скрипту (тупая синхронизация нужных папок с оффсайтом), потом разберусь по свободе.
Остатся должен только один ...

zxc
проходил мимо

Re: Создание зеркала сервера обновления антивируса Касперско

Непрочитанное сообщение zxc » 2010-07-21 13:29:26

Пишу свой скрипт на bash, наткнулся на такую бяку: unzip не хочет распаковывать файл av-i386&ids-daily.zip, потому что в нем есть символ &. Без переименования нельзя обойтись ?