PDA

Bekijk de volledige versie : Давайте обсудим запуск серверов обновления...



2bars
24-06-2008, 05:06
Сегодня мне задали вопрос о том, как я сделал сервер обновления для антивируса касперского
Так вот, я написал скрипт, благодаря каторому каждый день происходит закачка архивов с сервера касперского, затем всё это разархивируется, и ложится в папку на веб сервере.

этот скрипт необходимо поместить /opt/etc/cron.daily

#!/bin/sh
/bin/rm -f "/opt/tmp/av-i386&ids-daily.zip"
/opt/bin/wget -P /opt/tmp --read-timeout=30 --connect-timeout=10 --dns-timeout=10 -t 0 --waitretry=10 -c http://dnl-eu11.kaspersky-labs.com/zips/av-i386%26ids-daily.zip -a /opt/var/log/av/day.log
/opt/bin/unzip -o "/opt/tmp/av-i386&ids-daily.zip" -d /opt/share/www/avp

этот скрипт необходимо поместить /opt/etc/cron.weekly


#!/bin/sh
rm -f "/opt/tmp/av-i386&ids-cumul.zip"
wget -P /opt/tmp --read-timeout=30 --connect-timeout=10 --dns-timeout=10 -t 0 --waitretry=10 -c http://dnl-eu11.kaspersky-labs.com/zips/av-i386%26ids-cumul.zip -a /opt/var/log/av/month.log
unzip -o "/opt/tmp/av-i386&ids-cumul.zip" -d /opt/share/www/avp/cumul

необходимо cделать chmod +x <filename> , где <filename>-название ващих скриптов...

P.S. При первом обновлении в антивирусе указываем путь
http://my.router:8081/avp/cumul
при последуюих
http://my.router:8081/avp/

для общего развития и уточнения времени обновления можно почитать
тут (http://www.kaspersky.ru/support/personalMP5/update?print=true&qid=180593537)

Спасибо за внимание!
скрипты очень тривиальные... но работают :)
кстати совсем недавно рылся в инете и нашел еще один скрипт, но мне не понравился

#!/bin/sh
# Samba shared director
# *********************************
# ********* CHANGE THIS ************
# *********************************
UPDATES_DIR=/opt/share/www/kav

CUMUL="
http://dnl-ru1.kaspersky-labs.com/zips/av-i386-cumul.zip
"
DAILY="
http://dnl-ru1.kaspersky-labs.com/zips/av-i386-daily.zip
"
# Temporary dir for unpacking zip archives
TMP_DIR=$UPDATES_DIR/"temp-"`date +%Y%m%d`

#Checking if unzip is installed
if [ ! `which unzip` ]; then
echo
echo "*********** You don't have UNZIP package installed . *********** "
echo "*********** You can install it by typing as root user: *********** "
echo
echo "*********** pkg_add -r unzip *********** "
echo
exit 1
fi

CHECK_DATE ()
{
LAST_UPDATE=`cat $UPDATES_DIR/.cumul_check`
CURRENT_DATE=`date +%d%m%Y`
CURRENT_WEEKDAY=`date +%w`
}

CHECK_DIRS ()
{
# Testing if dirrectory exist. If not creating it.
if [ ! -d $UPDATES_DIR ]; then
echo "There is no shared directory. Creating it."
mkdir -p $UPDATES_DIR || echo "Achtung! Can't create dir."
fi
if [ ! -d $TMP_DIR ]; then
mkdir -p $TMP_DIR || echo "Achtung! Can't create temporary dir."
fi
}

# Cumulative update function
UPDATE_CUMUL ()
{
echo "Downloading cumulative archive"
CHECK_DIRS
cd $UPDATES_DIR && wget $CUMUL && unzip -qo av-i386-cumul.zip -d $TMP_DIR && \
mkdir -p $UPDATES_DIR/cumul && mv $TMP_DIR/* $UPDATES_DIR/cumul && rm -rf $TMP_DIR
echo `date +%d%m%Y` > $UPDATES_DIR/.cumul_check
cd -
}

# Daily update function
UPDATE_DAILY ()
{
echo "Downloading daily archive"
CHECK_DIRS
cd $UPDATES_DIR && wget $DAILY && unzip -qo av-i386-daily.zip -d $TMP_DIR && \
mkdir -p $UPDATES_DIR/daily && mv $TMP_DIR/* $UPDATES_DIR/daily/ && rm -rf $TMP_DIR
cd -
echo
echo "All updates complete."
echo
}

# MAIN
if [ ! -f $UPDATES_DIR/.cumul_check ]; then
UPDATE_CUMUL
UPDATE_DAILY
exit 0
fi

CHECK_DATE

# Dowload cumulative and weekly update if days left from last update
# more then days left from last SUNDAY
if [ $CURRENT_WEEKDAY -eq 0 -a $LAST_UPDATE -ne $CURRENT_DATE ]; then
UPDATE_CUMUL
UPDATE_WEEKLY
UPDATE_DAILY
else
UPDATE_DAILY
fi

exit 0


вообще он был дря фриибсд и там использовалась команда fetch а её нет в репазиториях и я тупо поставил wget... вроде работает но нифига не прапвильно :) доделывать его просто влом было

lynx
24-06-2008, 13:31
Спасибо.:)
Нечто похожее живет у меня для DrWeb:


#!/bin/sh
#
# Download DrWeb bases
#
DESTIN=/shares/MYVOLUME1/MYSHARE1/AIDS

wget -c -nd -nc --level=0 -o /opt/var/log/wget.log -P $DESTIN/DrWeb/Zipped ftp://ftp.drweb.com/pub/drweb/bases/*.zip
find $DESTIN/DrWeb/Zipped/ -exec unzip -o {} -d $DESTIN/DrWeb/Bases/ ';'


Пути указаны для WL-700gE, на клиентских станциях в drweb32.ini строка VirusBase = указывает вместо локального каталога на расшаренный.
Запускается раз в неделю кроном.

Теперь относительно Вашего скрипта:


этот скрипт необходимо поместить /opt/etc/cron.weekly


#!/bin/sh
rm -f "/opt/tmp/av-i386&ids-cumul.zip"
wget -P /opt/tmp --read-timeout=30 --connect-timeout=10 --dns-timeout=10 -t 0 --waitretry=10 -c http://dnl-eu11.kaspersky-labs.com/zips/av-i386%26ids-cumul.zip -a /opt/var/log/av/month.log
unzip -o "/opt/tmp/av-i386&ids-cumul.zip" -d /opt/share/www/avp/cumul


ИМХО, av-i386&ids-cumul.zip нужен только один раз, вначале. В дальнейшем же:
раз в неделю по воскресеньям нужно качать av-i386-weekly.zip.
раз в день с понедельника по субботу нужно качать av-i386-daily.zip

Так мне показалось по алгоритму обновлений касперского.

DemonGloom
24-06-2008, 18:13
Для DrWeb.
По завершении скрипта вы получите в указанных папках вирусные базы
PACKPATH - файл в который запакованы все обновления. Распаковать напрямик в C:\Program Files\DrWeb
TMPPATH - там лежат запакованные обновления так, как получены с сайта
BASESPATH - там лежат все распакованные базы
Запускать раз в день



#!/bin/sh

SERVER=ftp://updates.drweb.com/pub/drweb/bases/
BASESPATH=/opt/share/www/drweb
TMPPATH=/opt/tmp/drweb
PACKPATH=/opt/bases.zip

rm $TMPPATH/dwrtoday.zip
rm $TMPPATH/drwtoday.zip
rm $TMPPATH/dwntoday.zip
wget -nc -nd -P $TMPPATH -r -l 1 $SERVER
unzip -uoq "$TMPPATH/*" -d "$BASESPATH/"
zip -rj PACKPATH "$BASESPATH/"

#rm -r $TMPPATH
#rm -r $BASESPATH
#rm -r $PACKPATH


--------
Спасибо Antosha (http://wl500g.info/member.php?u=12915) за замечание, его исправление добавил.

YAG
25-06-2008, 07:31
Мой скриптик для NOD32 здесь (http://wl500g.info/showpost.php?p=100812&postcount=107).

Antosha
30-06-2008, 17:18
Для DrWeb.
По завершении скрипта вы получите в указанных папках вирусные базы
PACKPATH - файл в который запакованы все обновления. Распаковать напрямик в C:\Program Files\DrWeb
TMPPATH - там лежат запакованные обновления так, как получены с сайта
BASESPATH - там лежат все распакованные базы
Запускать раз в день


Немного модифицировал скрипт, а то он имена каталогов добавлял:



#!/bin/sh

SERVER=ftp://updates.drweb.com/pub/drweb/bases/

TMPPATH=/tmp/av_bases/drweb/arch # лежат запакованные обновления так, как получены с сайта
BASESPATH=/tmp/av_bases/drweb/base # лежат все распакованные базы
PACKPATH=/tmp/av_bases/drweb/all_bases.zip # файл в который запакованы все обновления. Распаковать напрямик в "C:\Program Files\DrWeb"

rm $TMPPATH/dwrtoday.zip
rm $TMPPATH/drwtoday.zip
rm $TMPPATH/dwntoday.zip
wget -nc -nd -P $TMPPATH -r -l 1 $SERVER
unzip -uoq "$TMPPATH/*" -d "$BASESPATH/"
zip -rj $PACKPATH "$BASESPATH/"

#rm -r $TMPPATH
#rm -r $BASESPATH
#rm -r $PACKPATH

kirillk2
06-07-2008, 18:13
Расширенная версия скрипта, по мотивам исходного скрипта 2bars

После установки запустить
/opt/sbin/kavupdater.sh all

а дальше - через крон.

cat /opt/sbin/kavupdater.sh

#!/bin/sh
#
# kavupdater.sh
# v.0.2
# by k2 at 2008
#
# Description:
# Script for updating antivirus bases for KAV from zip-files
#
# Ussage:
# kavupdater.sh [-s serverpath] [-b bases] [-t tmp]
# [-i|--ids {yes|no}] [-r|--remove-unpacked {yes|no}]
# {daily|weekly|cumul|all}
#
# Example of Cron ussage:
#
# 05 06 * * * admin /opt/sbin/kavupdater.sh daily
# 00 06 * * 7 admin /opt/sbin/kavupdater.sh weekly
# 10 06 1 * * admin /opt/sbin/kavupdater.sh -b /opt/home/kav/cumul cumul
#

## Default settings:

## Full http-path to zips
serverpath="http://dnl-eu11.kaspersky-labs.com/zips"

## Include IDS-signs ("yes" or "no")
withids=yes

## Temp. path
tmp=/opt/tmp/kav

## Path for bases
bases=/opt/home/kav

## Remove unpacked files ("yes" or "no")
remove=yes

## With proxy
#http_proxy=http://127.0.0.1:3128/; export http_proxy

ussage() {
echo "Ussage: $0" >&2
echo " [-s serverpath] [-b bases] [-t tmp]"
echo " [-i|--ids {yes|no}] [-r|--remove-unpacked {yes|no}]"
echo " {daily|weekly|cumul|all}"

exit 3
}

while [ -n "$*" ]; do
case "$1" in
"-s") shift && serverpath=$1;;
"-b") shift && bases=$1;;
"-t") shift && tmp=$1;;
"-i"|"--ids") shift && withids=$1;;
"-r"|"--remove-unpacked") shift && remove=$1;;
*) action=$1;;
esac
shift
done

mkdir -p "$tmp"
[ ! -d "$tmp" ] && echo "Can't find temp directory $tmp" && exit 2 >&2

#mkdir -p "$bases"
[ ! -d "$bases" ] && echo "Can't find bases directory $bases" && exit 2 >&2

downloadFile() {
[ -z "$1" ] && echo "File name not defined!" && exit 1 >&2
rm -f "$tmp/$1"
wget -q -P "$tmp" --read-timeout=30 --connect-timeout=10 --dns-timeout=10 -t 0 --waitretry=10 -c "$serverpath/$1"
r=$?
return $r
}

unpackFile() {
[ -z "$1" ] && echo "File name not defined!" && exit 1 >&2
unzip -o "$tmp/$1" -d "$bases" >/dev/null
r=$?
return $r
}

getFiles() {
for f; do
downloadFile $f || ( echo "Error while downloading $f!" && exit 4 >&2 )
done

for f; do
unpackFile $f || ( echo "Error while unpacking $f!" && exit 5 >&2 )
done

[ ! "$remove"="yes" ] && return 0
for f; do
rm -f "$tmp/$1" || ( echo "Error while removing $f!" && exit 6 >&2 )
done
}

if [ "$withids"="yes" ]; then
prefix="av-i386&ids-"
else
prefix="av-i386-"
fi

case "$action" in
d|daily)
getFiles "$prefix"daily.zip
;;
w|weekly)
getFiles "$prefix"weekly.zip
;;
c|cumul)
getFiles "$prefix"cumul.zip
;;
a|all)
getFiles "$prefix"cumul.zip "$prefix"weekly.zip "$prefix"daily.zip
;;
wd|dw)
getFiles "$prefix"weekly.zip "$prefix"daily.zip
;;
*)
ussage
;;
esac


использовать в кроне можно например так:

cat /opt/etc/cron.d/kavcrons


# KAV updates
05 07 * * * admin /opt/sbin/kavupdater.sh d
00 07 * * 7 admin /opt/sbin/kavupdater.sh w

kirillk2
06-07-2008, 19:14
Возможно. Вот ссылка из гугла (сам не пробовал, ибо нодом не пользуюсь)
http://www.opennet.ru/openforum/vsluhforumID1/72801.html

vectorm
06-07-2008, 19:19
а для NOD32 можно такое реальзовать *?
Для кого создавали эту тему (http://wl500g.info/showthread.php?t=14786)?

Kolandr
07-08-2008, 22:21
p.s. и эту :)
http://wl500g.info/showthread.php?t=7877&highlight=NOD32

kodmis
24-09-2008, 11:27
Вот еще по-поводу скачивания баз и модулей KAV к себе на FTP:
http://forum.kaspersky.com/index.php?showtopic=53611
http://forum.kaspersky.com/index.php?showtopic=63883

Dayran
06-12-2008, 02:45
А сервер обновления windows можно сделать?

2bars
06-12-2008, 06:40
можно, но не из роутера...
купить комп, поставить туда wsus... :)

ABATAPA
06-12-2008, 10:13
можно, но не из роутера...
купить комп, поставить туда wsus... :)

Можно и на роутере, поставив Proxy с принудительным кэшированием файлов с соотв. сайтов.

2bars
06-12-2008, 10:46
чёто в этом есть... сквид вам в руки...

ABATAPA
06-12-2008, 16:37
чёто в этом есть... сквид вам в руки...
Разумеется - давно и многими успешно пользуется...

2bars
06-12-2008, 18:56
но честно говоря, сквид с кешем сильно грузит... если rtorrent пускать с 10-15 закачками то у меня были случаи падения рутера :)

Dayran
07-12-2008, 10:01
Можно и на роутере, поставив Proxy с принудительным кэшированием файлов с соотв. сайтов.


А можно про это поподробней, у меня роутер меньше недели, и пока я во всё этом не очень хорошо разбираюсь.

2bars
07-12-2008, 17:46
со временем придет...
была тема про сквид и кеш...
ставится сквид с кешем, после чего запускается обнаволение на одной машине, она выкачивает файлы из инета, сквид все чательно кеширует на жесткий диск... потом следующий клиент подключается и получает обновления моментально...

но честно говоря я не знаю по каким протоколам работает обновление винды, если по http ftp и иже с ними то выйдет...

Groghal
15-04-2010, 20:12
Тк нод32 в последнее время не вызывает у меня доверия... я стал пользоваться KIS 2010 (антивирус + файрвол от Касперского)... и возникла необходимость в собственном сервере обновлений в локалке. В ходе поиска я наткнулся на вот эту тему (http://wl500g.info/showthread.php?t=14891). Все поставил/изменил пути чуток и все заработало! Теперь поподробнее.

1. Устанавливаете пакет unzip - ipkg install unzip
2. Скачиваете вложение к этому посту - kav_update.zip
3. Кидаете файл (естественно то что в архиве а не сам архив) куда вам угодно на роутер - я кинул в kav_update.sh прямо в корень /opt/etc/
4. Даете права на исполнение - командой chmod +x путь до скрипта
5. Запускаете на роутере этот скрипт с командой all (это нужно для первичной загрузки антивирусных баз) - ./путь до скрипта/kav_update.sh all
6. Скачиваете архив kav_update_d.zip и копируете его содержимое в /opt/etc/cron.daily
7. Скачиваете архив kav_update_w.zip и и копируете его содержимое в /opt/etc/cron.weekly
ВНИМАНИЕ! Если вы скопировали скрипт kav_update.sh НЕ в /opt/etc/ - вам нужно будет подредактировать файлы kav_update_d.sh и kav_update_w.sh
8. Дайте права этим двум скриптам - kav_update_d.sh и kav_update_w.sh (по аналогии с пунктом 4)

С роутером манипуляции закончены. Теперь что касается настроек антивируса.
Открываете окно настроек -> Вкладка обновление -> Источник обновления -> Нажимаете кнопку настройка -> Снимаете галку "Сервера обновления касперского" -> Жмете кнопку Добавить -> В поле источник вводите адрес http://айпи и порт (при необходимости) вашего сервера/kav/ (http://) (пример - http://192.168.1.1/kav/)

PS Код прикрепленных файлов
kav_update.sh:

#!/bin/sh
#
# kavupdater.sh
# v.0.2
# by k2 at 2008
#
# Description:
# Script for updating antivirus bases for KAV from zip-files
#
# Ussage:
# kavupdater.sh [-s serverpath] [-b bases] [-t tmp]
# [-i|--ids {yes|no}] [-r|--remove-unpacked {yes|no}]
# {daily|weekly|cumul|all}
#
# Example of Cron ussage:
#
# 05 06 * * * admin /opt/sbin/kavupdater.sh daily
# 00 06 * * 7 admin /opt/sbin/kavupdater.sh weekly
# 10 06 1 * * admin /opt/sbin/kavupdater.sh -b /opt/home/kav/cumul cumul
#

## Default settings:

## Full http-path to zips
serverpath="http://dnl-eu11.kaspersky-labs.com/zips"

## Include IDS-signs ("yes" or "no")
withids=yes

## Temp. path
tmp=/opt/share/www/kav/tmp

## Path for bases
bases=/opt/share/www/kav

## Remove unpacked files ("yes" or "no")
remove=yes

## With proxy
#http_proxy=http://127.0.0.1:3128/; export http_proxy

ussage() {
echo "Ussage: $0" >&2
echo " [-s serverpath] [-b bases] [-t tmp]"
echo " [-i|--ids {yes|no}] [-r|--remove-unpacked {yes|no}]"
echo " {daily|weekly|cumul|all}"

exit 3
}

while [ -n "$*" ]; do
case "$1" in
"-s") shift && serverpath=$1;;
"-b") shift && bases=$1;;
"-t") shift && tmp=$1;;
"-i"|"--ids") shift && withids=$1;;
"-r"|"--remove-unpacked") shift && remove=$1;;
*) action=$1;;
esac
shift
done

mkdir -p "$tmp"
[ ! -d "$tmp" ] && echo "Can't find temp directory $tmp" && exit 2 >&2

#mkdir -p "$bases"
[ ! -d "$bases" ] && echo "Can't find bases directory $bases" && exit 2 >&2

downloadFile() {
[ -z "$1" ] && echo "File name not defined!" && exit 1 >&2
rm -f "$tmp/$1"
wget -q -P "$tmp" --read-timeout=30 --connect-timeout=10 --dns-timeout=10 -t 0 --waitretry=10 -c "$serverpath/$1"
r=$?
return $r
}

unpackFile() {
[ -z "$1" ] && echo "File name not defined!" && exit 1 >&2
unzip -o "$tmp/$1" -d "$bases" >/dev/null
r=$?
return $r
}

getFiles() {
for f; do
downloadFile $f || ( echo "Error while downloading $f!" && exit 4 >&2 )
done

for f; do
unpackFile $f || ( echo "Error while unpacking $f!" && exit 5 >&2 )
done

[ ! "$remove"="yes" ] && return 0
for f; do
rm -f "$tmp/$1" || ( echo "Error while removing $f!" && exit 6 >&2 )
done
}

if [ "$withids"="yes" ]; then
prefix="av-i386&ids-"
else
prefix="av-i386-"
fi

case "$action" in
d|daily)
getFiles "$prefix"daily.zip
;;
w|weekly)
getFiles "$prefix"weekly.zip
;;
c|cumul)
getFiles "$prefix"cumul.zip
;;
a|all)
getFiles "$prefix"cumul.zip "$prefix"weekly.zip "$prefix"daily.zip
;;
wd|dw)
getFiles "$prefix"weekly.zip "$prefix"daily.zip
;;
*)
ussage
;;
esac

kav_update_d.sh:

#!/bin/sh
/opt/etc/kav_update.sh d

kav_update_w.sh:

#!/bin/sh
/opt/etc/kav_update.sh w

PS я еще буду делать (на всякий пожарный) команду /opt/etc/kav_update.sh w не уверен в ее необходимости, но благо трафик не ограничение - хуже не будет
PSS 99,99% скрипта взято тут (http://wl500g.info/showpost.php?p=103245&postcount=5) (я только подредактировал пути чуть чуть)
PSSS был бы очень рад видеть обновлялку Каспера в супер-установочном скрипте, которому посвящена эта тема форума =)

valerakvb
15-04-2010, 21:44
Тк нод32 в последнее время не вызывает у меня доверия... я стал пользоваться KIS 2010 (антивирус + файрвол от Касперского)... и возникла необходимость в собственном сервере обновлений в локалке. В ходе поиска я наткнулся на вот эту тему (http://wl500g.info/showthread.php?t=14891). Все поставил/изменил пути чуток и все заработало! Теперь поподробнее.=)

Спасибо вам конечно за такую детальную инструкцию по установке антивируса Жени Касперского, но при чем тут эта тема :confused:
Открывайте новую тему и советуйте там :cool:
У меня лично к Касперу другое мнение (начиная с 1987 года и по сей день, если еще кто знает такого из "Диалог Наука" антивирус Лозинского):eek:
А если вам что-то в этом пакете (скрипте) "в последнее время не вызывает доверия" - так и не ставьте... никто вас и не принуждает

P.S. Я пропорщик или где ??? ( У нас так прапор в армии говорил)

Прикольно раз (http://www.youtube.com/watch?v=XIgnVqLBSw4&feature=related) и два (http://www.youtube.com/watch?v=b3mtPqGUh2M)