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

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

Модераторы: test, f0s

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

Новое сообщение Yanis » 2008-08-15 18: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. Выслушать кучу дельных замечаний и комментариев.
Yanis
рядовой
 
Сообщения: 23
Зарегистрирован: 2008-08-15 17:53:36

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

Новое сообщение zg » 2008-08-17 8:23:27

Yanis писал(а):Узнать, как fetch заставить качать только обновленные файлы
я использую wget -S --spider, для получения заголовков, и если длина удалённого файла отличная от локального, то качаю. Правда для оптимизации придумал простенький скрипт, который на удалённом сервере подготавливает список файлов с их размерами, чтоб двадцать запросов лишних не делать. Если у каспера можно получить подбынй список, то обязательно нужно юзать его. Дополнительно ещё распаралеллил закачки, чтобы минимизировать время загрузки, но думаю тут это не актуально :smile:
zg
полковник
 
Сообщения: 5777
Зарегистрирован: 2007-12-07 14:51:33
Откуда: Верх-Нейвинск

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

Новое сообщение manefesto » 2008-08-21 15:24:02

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

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

Новое сообщение Yanis » 2008-08-21 17:16:11

Надо, только чуть позже - этот скрипт некорректно качает патчи программы, если сегодня свет будет нормально работать - обновлю...
Yanis
рядовой
 
Сообщения: 23
Зарегистрирован: 2008-08-15 17:53:36

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

Новое сообщение Pez! » 2008-09-04 12:28:22

Приветствую, хотелось бы поинтересоваться как успехи с этим скриптом, ибо тоже очень хочеться замутить обновлялку касперского в локалке.
Всёравно все умрут, какая разница....и только серваки с фряхой будут работать ещё некоторое время после.
Аватара пользователя
Pez!
старшина
 
Сообщения: 436
Зарегистрирован: 2008-01-13 21:02:24
Откуда: москва матушка

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

Новое сообщение Yanis » 2008-09-04 23:10:21

Уже неделю+ не трогал - некогда, вообще - работает, но не всегда корректно, приходится то один, то другой файлик руками качать и в папочку класть...
Добью скоро.
Yanis
рядовой
 
Сообщения: 23
Зарегистрирован: 2008-08-15 17:53:36

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

Новое сообщение Pez! » 2008-09-11 19:23:12

Спасибо, буду с нетерпением ждать ибо уж больно много юзают этого касперского :cz2:
Всёравно все умрут, какая разница....и только серваки с фряхой будут работать ещё некоторое время после.
Аватара пользователя
Pez!
старшина
 
Сообщения: 436
Зарегистрирован: 2008-01-13 21:02:24
Откуда: москва матушка


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

Новое сообщение Yanis » 2008-09-23 22: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
Yanis
рядовой
 
Сообщения: 23
Зарегистрирован: 2008-08-15 17:53:36

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

Новое сообщение a_max » 2008-10-02 11: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


Ну точнее я разбил его ещё по папкам и запускаю параллельно, чтобы канал по полной забить и быстрее скачать всё.
a_max
проходил мимо
 

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

Новое сообщение Yanis » 2008-10-02 15:29:31

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

Можно и так, но ты список компонентов выбрать не можешь
Yanis
рядовой
 
Сообщения: 23
Зарегистрирован: 2008-08-15 17:53:36

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

Новое сообщение rambomax » 2008-10-16 15: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"

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

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

Новое сообщение Yanis » 2008-10-16 17:26:50

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

Единственное - я не уверен, что все версии КАВа умеют сохранять в папку обновления...
Yanis
рядовой
 
Сообщения: 23
Зарегистрирован: 2008-08-15 17:53:36

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

Новое сообщение ZIMMER » 2008-10-23 14:21:15

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

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

и будет у вас точное зеркало от самого корня, если нужно отдельные папки, то можно задать...
ZIMMER
проходил мимо
 
Сообщения: 1
Зарегистрирован: 2008-05-30 10:21:16

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

Новое сообщение d0dger » 2008-10-25 12:15:01

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

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

Новое сообщение Yanis » 2008-10-25 20:26:55

d0dger писал(а):в nix-скриптах ничего не понимаю

А я не понимаю группировку по компонентам, в простейшем случае можно
1. Качать весь фтп
2. Читать XML и качать все перечисленные в нем компоненты
3. Поставить KAV2009, KIS2009 и качать только нужные им компоненты (читай ссылку в моем первом посте)
Yanis
рядовой
 
Сообщения: 23
Зарегистрирован: 2008-08-15 17:53:36

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

Новое сообщение kenny » 2008-11-12 19:43:34

fetch: http://dnl-ru2.kaspersky-labs.com/index/6//: size of remote file is not known
fetch.out 866 B 724 kBps
и так висит не подскажите в чем проблема????
:cz2:
kenny
проходил мимо
 

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

Новое сообщение Yanis » 2008-11-12 19:47:13

Не-а, не подскажу, может другой сервер попробовать?
Yanis
рядовой
 
Сообщения: 23
Зарегистрирован: 2008-08-15 17:53:36

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

Новое сообщение Tyler » 2009-02-15 16: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";
}
Tyler
проходил мимо
 

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

Новое сообщение factor » 2009-02-15 17: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
factor
ефрейтор
 
Сообщения: 63
Зарегистрирован: 2008-02-05 17:36:26
Откуда: Омск

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

Новое сообщение zingel » 2009-02-16 10:07:42

Z301171463546 - можно пожертвовать мне денег
Аватара пользователя
zingel
beastie
 
Сообщения: 6210
Зарегистрирован: 2007-10-30 4:56:49
Откуда: Moscow

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

Новое сообщение Косс » 2009-03-30 11:02:02

Скажите пожалуйста, а rsync для этого не подойдет?
Косс
проходил мимо
 

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

Новое сообщение thefree » 2009-03-30 13:12:11

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

http://forum.kaspersky.com/index.php?showtopic=107078
Код: Выделить всёРазвернуть
# cd /usr/ports/misc/compat6x && make install clean
Не судите меня строго, Я не волшебник, а только учусь!
Аватара пользователя
thefree
лейтенант
 
Сообщения: 662
Зарегистрирован: 2008-12-29 10:23:19
Откуда: Весёлая Страна

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

Новое сообщение freeman » 2009-04-08 17:23:56

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

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

Новое сообщение zxc » 2010-07-21 14:29:26

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

След.

Вернуться в Про сайт

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1