Зеркало для Symantec Offline Updates

Многие знают о софтварных продуктах компании Symantec. Антивирус разработанный этой компанией используется у нас на работе. Оличительные черты данного антивируса пожалуй невсех впечатлят, но всеже:

  • вменяемая корпоративная лицензия
  • возможность централизированного управления и мониторинга
  • неслабая тормознутьсть в работе 🙂

Есть еще много всяких плюшек и радостей. Мне, к примеру, нравится наличие так называемых Offline Updates. Это обычные exe файлы, предназначенные для обновления антивируса на машинах которые не имеют доступа к интернету. Такие экзешнички можно скачать из офсайта symantec или с ftp. Для того чтобы иметь актуальную версию этих обновлений — приходилось частенько их качать (они обновляются примерно раз в сутки). Поэтому сама собой появилась задача:

  1. сделать на своей машине зеркало нужных мне директорий с симантековского ftp
  2. роздать доступ к ним в сети по samba (поскольку клиенты восновном с WinXP)

Учитывая особенности моего доступа в интернет, нужно чтобы скрипт работал через http прокси-сервер http://my.proxy:3128 (тем у кого прямой доступ в интернет необходимо просто закомментировать первых 6 строчек скрипта, там где задаются переменные ftp_proxy и http_proxy)
Ну чтож, покопавшись немного с bash, родился вот такой скрипт под названием /root/scripts/symantec_update.sh

#!/bin/bash
if [ -z ${ftp_proxy} ]; then
 export ftp_proxy="http://my.proxy:3128"
fi
if [ -z ${http_proxy} ]; then
 export http_proxy="http://my.proxy:3128"
fi
#URL="ftp://ftp.symantec.com/AVDEFS/symantec_antivirus_corp/"
WORK_DIR="/opt/symantec"
[ -d ${WORK_DIR} ] || mkdir ${WORK_DIR} ; mkdir ${WORK_DIR}/{SAV,SEP}
### <- Remove ALL OLD MD5 Summs -> ###
find ${WORK_DIR} -atime +1 -exec rm '{}' \;
cd ${WORK_DIR}

check_md5 () {
MD5_SYMANTEC="md5-hash.txt"
FILES=`ls |grep .exe`
for FILE in ${FILES}
do
   if [ -f ${FILE/exe/md5} ]; then
     continue
   else
     MD5_ORIG=`grep ${FILE} ${MD5_SYMANTEC} |tr [A-Z] [a-z] |cut -d' ' -f1`
     echo "${MD5_ORIG}  ${FILE}" > "${FILE/exe/md5}"
     md5sum --check --status "${FILE/exe/md5}"
     # echo "For file ${FILE} exit status = $?"
        if [ $? -ne 0 ]; then
          echo "${FILE} --- bad checksum !!!" > ../md5sum_${FILE}.log
        else
          [ -f ../md5sum_${FILE}.log ] && rm ../md5sum_${FILE}.log
        fi
   fi
done
}
get_updates_SAV () {
lftp -c 'open -e "mirror -e -c --no-recursion -i -x86.exe -i md5-hash.txt" hftp://ftp.symantec.com/AVDEFS/symantec_antivirus_corp'
}

get_updates_SEP () {
lftp -c 'open -e "mirror -e -c --no-recursion -i -v5i32.exe -i md5-hash.txt" hftp://ftp.symantec.com/AVDEFS/symantec_antivirus_corp'
}

cd SAV
get_updates_SAV
check_md5
cd ../

cd SEP
get_updates_SEP
check_md5
cd ../

Возможно, он далек от совершенства, но главное работает!

Добавляем запись в crontab для автоматического запуска каждых 8 часов в 53 минуты

53    0-23/3    *    *    *    /root/scripts/symantec_update.sh

Конфиг /etc/samba/smb.conf для роздачи этих двух директорий по samba выглядит так:

[global]
realm = MY.DOMAIN
netbios name = black
workgroup = WORK
security = ads
idmap uid = 10000-20000
idmap gid = 10000-20000
disable spoolss = Yes
show add printer wizard = No
template shell = /bin/bash
template homedir = /home/%D/%U
winbind use default domain = yes

[Symantec Updates]
comment = Symantec Offline Updates
path = /opt/symantec
browseable = yes
writable = no
create mask = 0664
directory mask = 0777
valid users = @"WORK\domain admins", @"WORK\domain users"

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

Ну вот и все! С заданием справились на 100% — апдейты автоматом качаются, и роздаются по samba с авторизацией в домене 🙂

    • Драйв
    • Март 21st, 2010 12:11дп

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

    • admin
    • Март 21st, 2010 12:13дп

    Конечно 🙂
    P.S. Ссылка обязательна.

  1. Трэкбэков пока нет.

Why ask?