среда, 28 мая 2008 г.

Обновление AVG Free 8 с локальных серверов

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

Вы скажете, что есть функция обновления из локальной папки. Функция-то есть, но реализована она крайне неудобно и вот почему:

При обновлении антивирусных баз из интернета, фактически, не требуется никаких вмешательств пользователя. Все что он увидит - 3 выскакивающих и самозакрывающихся окошка. Это - плюс. А при обновлении из папки, даже если установлена галка “Do not ask for the update source”, он все равно предложит выбрать каталог из списка. Все бы хорошо, но когда этот антивирус установлен в организации на 30 машинах и каждый из 30 чайников начинает звонить мне и спрашивать: “Тут выскочила фигня такая…”, пытаться прочесть мне текст, не зная английского… Сами понимаете - напрягает.

Наша организация выходит в интернет через прокси. Маршрутизатор на Debian 4 r1, сам проксик - squid. Поэтому было решено воспользоваться возможностью редиректа. В squid.conf:
redirect_program /usr/local/bin/redirector.pl
Зная, что по умолчанию АVG 8 версии обращается на адрес http://guru.grisoft.com/softw/80free/update/ можно изготовить и сам скрипт redirector.pl:
#!/usr/bin/perl
$|=1;
while (<>)
{
s@http://guru.grisoft.com/softw/80free/update@http://192.168.1.16/avg_bases@;
print;
}
Как результат: запрос на получение обновлений с http://guru.grisoft.com/softw/80free/update будет автоматически перенаправлен по соответствующему URL на локальный веб-сервер организации с IP 192.168.1.16.

Веб-сервер должен быть установлен и настроен.

Теперь о том, как забирать файлы с сервера обновлений AVG:

Update manager AVG получает файл avginfoavi.ctf, парсит его и загружает нужные файлы. В соответствие с этим мы должны создать зеркало сервера обновлений. Нижеприведенный скрипт получает файл avginfo.ctf, извлекает из него имена файлов с обновлениями и загружает их в папку на сервере:
#!/bin/sh
WORKDIR=/home/corning/public_html/avg_bases
AVGUPD_URL=http://guru.grisoft.com/softw/80free/update
/bin/mkdir -p $WORKDIR
/usr/bin/wget -q -O $WORKDIR/avginfoavi.ctf $AVGUPD_URL/avginfoavi.ctf
if [ ! -e $WORKDIR/avginfoavi.ctf ]; then
echo "Error downloading AVG update filelist"
exit
fi
for file in `grep -o "[[:alnum:]]*.bin" $WORKDIR/avginfoavi.ctf`
do
if [ ! -e $WORKDIR/$file ]; then
/usr/bin/wget -q -O $WORKDIR/$file $AVGUPD_URL/$file
fi
done
Для работы скрипта необходим wget, также, если требуется, нужно испавить путь до wget-a. Ставим скрипт в крон, периодичность - по усмотрению.

Статья переделана под 8 версию антивируса. Оригинал для 7 версии тут: http://home.onego.ru/~rti/2007/03/01/35/

5 комментариев:

Анонимный комментирует...

ctf`doif [ ! -e $WORKDIR/$file ]; then/usr/bin/wget -q -O $WORKDIR/$file $AVGUPD_URL/$filefidoneДля работы скрипта необходим wget, также, если требуется, нужно испавить путь до wget-a

Анонимный комментирует...

А вас не смущает, что использование AVG Free в организации нарушает условия лицензирования?
AVG Anti-Virus Free Edition is for private, non-commercial, single computer use only. The use of AVG Free within any organization or for commercial purposes is strictly prohibited.

Никита комментирует...

А кто говорит , что Free нельзя использовать, если он куплен. Просто этот материл и для организций, и для домашних локальных сетей. А способ для Commercial что для Free Edition один и тот же. Экономия трафика однако ;)

Анонимный комментирует...

Вот тут http://liski.vsi.ru/ubuntu/index.php?topic=215.msg777 кстати написано как ОЧЕНЬ просто обновлять базу, пользуясь паролем суперпользователя.
Zwanze

Анонимный комментирует...

а как написать в этом коде чтоб wget через прокси с авторизацией лез?