Скрипт автоматического обновления бесплатного антивируса Comodo. Устанавливается на Linux сервере.
Что делает?
Запускается планировщиком, например cron, и скачивает антивирусные базы с сервера Comodo на локальный диск linux-сервера. В настройках антивируса компьютеров локальной сети прописываем наш linux-сервер и они начинают обновляться не из интернета, а с нашего сервера.
Зачем?
Если в вашей организации все компьютеры имеют доступ в интернет, канал хороший и трафик бесплатный, то вам такая штука не нужна. Уменьшить интернет-трафик, уменьшить длительность обновления антивируса, а так же предоставить автоматическое обновление компьютерам, которым по той, а скорее иной причине доступ в интернет закрыт — вот зачем нужно весь этот огород городить.
Требования к …
Железо может быть практически любое. Главные требования — свободное место на диске гигов 5 под базы и чтобы операционка была Linux или похожая. Я рекомендую поставить Debian на виртуальной машине с диском гигов 20. Графических оболочек не надо, всё настраивается через командную строку.
Как установить?
Раз уж вы сумели установить Linux, то запустить скрипт не составит труда. Сперва проделаем подготовительные операции. Нам надо установить веб-сервер, например Apache. В Debian-подобных, в том числе Ubuntu, это делается командой sudo apt-get install apache2. В CentOS yum install httpd. Далее во всех хитросплетениях конфигурации апача надо найти где же находится корень документов, где хранится наш веб-сайт. По-умолчанию этот путь обычно /var/www. Запоминаем путь, он нам ещё пригодится.
Далее скачиваем по ссылке приведенной в конце скрипт. Распаковываем, например, в /usr/local/bin. Дальше скрипт необходимо подредактировать, а именно найти строчку DIR=/var/www. Вот вместо /var/www надо вписать тот самый корень веб-документов из предыдущего шага. Запустите скрипт /usr/local/bin/comodo_update.sh и создадутся все необходимые каталоги веб-сервера, базы скачаются из интернета и сохранятся в нужном месте.
Чтобы базы сами обновлялись раз в час необходимо создать файл /etc/cron.d/comodo с текстом 11 * * * * root /usr/local/bin/comodo_update.sh
Где скачать?
Ничего не получается, как быть?
Скрипт обновления раcпространяется под лицензией GPL v2, то есть без всяких гарантий и поддержки. Но чем смогу помогу. Оставляйте свои вопросы и пожелания в каментах.
Что ещё почитать?
Ну, этот блог можно. Можно форум http://forums.comodo.com, там даже русскоязычный раздел есть.
Какие изменения были от версии к версии?
2016.05.01
— Добавлены настройки для актуальных версий
2014.12.12
— Добавлены настройки для 8 версии
— Добавлено обновление баз данных сайтов
— Добавлено обновление баз Viruscope
2013.05.01
— Для всех текущих версий антивирусов (аж до 6.1) версия баз остаётся 5.8. Версия модулей от 1800 и до … Поэтому добавлена возможность для одной версии базы указать несколько версий модулей. Указываются они в массиве _VAR через пробел. Для тех кто не понял — не заморачивайтесь, качайте новую версию, там уже всё указано и исправлено.
2012.02.17
— Доработан алгоритм обновления. Теперь используются преимущественно кумулятивные обновления, а полная база обновляется редко. Резко сократился трафик.
2011.12.22
— Исправлена ошибка, из-за которой неправильно скачивались обновления самого антивируса.
2011.10.25
— Скачивает базы в новом формате упакованные 7zip.
— Добавлено обновление версии 5.8.
— Убрано обновление всех версий с 5.0 по 5.4, ибо они старые и ненужные. Таким образом, обновляются только версии 5.5 и 5.8.
2011.07.02
— Первоначальная версия
Спасибо! Зачетная статья. Давно искал способ обновлять антивири с сервака.
Кстати, в связи с выходом нового Комода можно сделать кое-какие изменения:
1. Изменить адрес загрузок (на старом есть не все версии обновлений) на download.comodo.com
2.Добавить версию 5,8, для этого в 14 строке скрипта через пробел добавить 58 и в разделе # Program to modules version association добавить _VER[58]=»1800″.
А так — все круто!
Кстати, еще: в целях экономии траффика можно вместо файлов *cav загружать *cav.z. (соответственно меняем скрипт).
Вы попробуйте версию 2011.10.25. В ней исправлено много ошибок и скачивается как раз cav.z
Скажите как добавить в скрипт поддержку обновлений версий с 5.0 по 5.4? И где можно найти информацию о том, что менять в скрипте когда будут новые версии. Спасибо.
Версии до 5.4 используют немного другой формат обновлений. Сделать так чтобы скрипт тянул обновления и в старом и в новом виде в принципе можно, и я даже начал писать, но потом посмотрел и понял что у меня все компьютеры со свежей версии и забил на это дело.
Что касается добавления последующих версий. В начале скрипта задаётся переменная VER. Через пробел перечислены версии, базы к которым скрипт скачивает. В данный момент это «55 58». Таким образом, добавив, например, 59 мы будем иметь на сервере обновление баз к версии 5.9. Есть ещё одна хитрость. Дело в том, что есть ещё обновления самого антивируса (программных модулей). Для того чтобы скачивались эти модули надо в районе 108 строки добавить соответствие версии антивируса версии модулей. Для версии 5.8, как мы видим, версия модулей 1800. Какая версия модулей будет у 5.9 я не знаю.
Но на самом деле вам не надо копаться в коде. При выходе новой версии Comodo я буду вносить соответствующие изменения в скрипт и выкладывать его здесь.
Столкнулся с такой странностью. Пока нет доступа к интернету, локальное обновление выдает ошибку — проверьте подключение. Если есть доступ, то все нормально — обновляется из сети как положено. Можете подсказать где копаться? Ну и про версию 5.9, когда можно ожидать обновленный скрипт?
Возьмите программу TcpDump. Она вроде как и под Windows есть. С её помощью посмотрите куда лезет Comodo. Что же касается версии 5.9 — так вроде она ещё не вышла. По крайней мере на официальном сайте только 5.8.
У меня обновилась до 5.9 сегодня
Версия 5.9 обновляется из баз 5.8. Так что ничего дополнительно менять не надо.
Спасибо!
За скрипт спасибо
Только вот смущает, что он постоянно тянет базу с нуля — 170 Мб. Ну и обновляется, после этого, на компах, соответственно, он тоже очень не быстро.
Кумулятивные обновления никак не сделать?
Кумулятивные обновления как раз работают. Их около 150. После исчерпания этого количества идёт полное обновление баз.
до 150ти у меня ни разу не доходило
Присоединяюсь к вопросу. Раньше в файле versioninfo.ini были следующие значения:
MaxDiff=150
MaxDiffLimit=150
А теперь:
MaxDiff=0
MaxDiffLimit=0
Потому, как мне кажется, антивирус-то и тянет каждый раз полную базу. Я это вижу по логам сквида (у меня комодо обновляется через прокси, не спрашивайте зачем, мне так удобнее).
Предлагаю перед выведением переменных о версиях баз сделать такое вычисление:
let max=$MaxAvailVersion-$MaxBase
А потом вместо нулей в ini-файл занести эту переменную (в моем случае — $max). Поправьте, если я не прав.
Внес изменения, о которых я писал выше, и объем траффика резко сократился. Думаю, что стоит внести это исправление. Если что, могу прислать свой файлик.
Насколько я понял, обновление антивируса делается так.
A) Для того чтобы обновить свежеустановленный антивирус надо файл полной базы + кумулятивные обновления после этой базы.
B) Для того чтобы обновить свежий антивирус надо взять номер последнего обновления и скачать все последующие кумулятивные.
C) Если компьютер не включался месяц, то делаем как в п.A.
Что нам даёт Comodo в файле versioninfo.ini?
1. Есть параметр MaxBase — это номер полной базы. Её всё равно качать надо!! (см п.А и С).
2. Есть параметр MaxAvailVersion — это максимальный номер обновления. То есть скачиваем все кумулятивные обновления от MaxBase+1 до MaxAvailVersion
Таким образом, мы имеем на нашем сервере полную базу и все последующие кумулятивные обновления. Что-то из этого не качать не получится, иначе в случае A и С у вас ничего не будет обновляться.
3. Есть параметр MaxDiff — это как раз для того чтобы уже при локальном обновлении антивирус не тянул полную базу. Это сколько кумулятивных обновлений доступно на сервере ДО MaxBase. У меня на сегодняшний момент все обновления до MaxBase стираются, поэтому я эти значения обнуляю.
Сейчас тестирую новую версию, где это всё будет устранено.
ждём новую
а то, раз в 3 дня, стабильно вытягивает полную базу
Полёт нормальный. Спасибо
Полную базу пока ни разу не вытягивало, только кумулятивные обновки.
Единственное, моя бубунта через раз кроном скрипт пускает. Разбираюсь.
Вопрос по обновлению программы. Если ставить локальное обновление, то при запуске обновления программы, обновления находит, начинается процесс загрузки, но затем выдает ошибку — файл неполный. Обновления из интернета тянутся без проблем. В чем может быть проблема?
Это может быть неправильная настройка веб-сервера, но маловероятно. Скорее всего обновления выкачались либо не полностью, либо с ошибкой. Совет такой:
1. Убедитесь что установлена именно версия 2012.02.17.
2. Запустите скрипт обновления снова.
3. Попробуйте обновить антивирус.
Возник вопрос по обновлению программы. Скрипт скачивает около 500 Мб с сайта комодо. Сделали зеркало (локальный веб-сервер), но компьютеры обновляться не желают.
Возможно ли. что, это связано с тем, что сама версия антивируса сменилась на 5.10.228257.2253? И, собственно, скрипт не качает для нее обновления?
Нет. Версия 5.10 обновляется точно так же как и 5.8. Смотрите логи самого веб-сервера.
Примерно та же ситуация последнюю неделю.
Если раньше свеже поставленный антивирь видел 180 метров баз, то сейчас только 23. Выкачивает их и дальше ошибка обновления. За неделю 4 компа накрутили 14 гигов трафика… и это с каналом 256 кБит.
Ставил 5.9
Качает только BASE_END_USER_V11914.CAV из bases. Папку updates тупо не замечает.
Всё оказалось веселее. Не распаковываются в bases скачанные базы. Засунул их туда вручную… обновилось до актуальной версии
но вот выполнения скрипта трёт всё в папке bases, в этот раз остался только «BASE_END_USER_v11952.cav.z» размер которого 1115904, 7-zip его не распаковывает, хотя заголовок в файле «7z».
Я так думаю, что у вас канал барахлит. Попробуйте в 113 строке WGET=»wget» заменить на WGET=»wget -t 100″ — он тогда будет делать 100 попыток скачать. Ну или можно указать вообще 0 — тогда он будет пытаться скачать до бесконечности.
Классно! Поставил в школе… Одна заморочка — скрипт каждый раз закачивает обновления программы в cis — это должно быть так или я где-то ошибся.
Обновки общие для cis и cav
Может кто знает, как «действенно» уменьшить аппетиты Комода? А то у мена на компах с 512 МБ озу, работать с ним нереально. Про 256 вообще молчу. На аналогичных конфигах но с 1 ГБ таких проблем нет, так что завязки именно на память, а не процессор.
что-то много ошибок 404 скрипт выдаёт
в том числе при попытке закачки first.cav
да 404 ошибка, что то комодщ
ики видно поменяли
удалил старые базы, добавил обновления из папки 59 для версии 5,10 -полет нормальный
скрипт вылетает с ошибкой
./comodo_update.sh: function: not found
очень странно, ubuntu server 12.04.1
Месяц — полет нормальный
Спасибо за статью.
Подскажите новичку, все поставил скачал и т.д. а теперь как заставить компы из сетки обновлять антивирь с убунты?
Позавчера перестали обновляться с нуля поставленные антивирусы.
Проблема пока остается с обновлением самой программы. Базы вроде обновляются нормально, а вот программу когда пытаюсь обновить, пишет что неполный файл или не найден файл. Есть какие нибудь соображения? Спасибо!
Хм.. с обновлениями тоже оказывается проблема. Вот что пишет:
http://download.comodo.com/av/updates55/versioninfo.ini
Распознаётся download.comodo.com… сбой: Имя или служба не известны.
wget: невозможно распознать адрес `download.comodo.com’
try:
SERVER=http://www.download.comodo.com, а не http://download.comodo.com
а как добавить поддержку версии 6.1? как узнать версию модуля?
Уважаемый автор! Скрипт отлично работает. большое спасибо вам. Присоединяюсь к предидущему коментарию. Как узнать версии модулей для 6.0, 6.1?
Я узнаю версию модулей просто — смотрю в логах сервера куда антивирус долбится. Версия от 1 мая 2013 отлично работает с 6.1.
Добрый день.
При обновлении с сервера пишет что «Не удается найти указанный файл».
Пробовал браузером зайти в папку с обновлениями все заходит. Ума не приложу в чем проблема. В логах апач пишет что не может найти файлы файлы, причем половина файлов действительно отсутствует в папке с обновлением.
У кого-нибудь было такое?
Какой файл то не может найти?
Разобрался!!!
При настройке, в скрипте я указал папку для обновлений /var/www/comodo_upd/ (каталог web сервера /var/www/) Скрипт успешно закинул туда обновления. Затем в программе я указал путь к базам http://ip-сервера/comodo_upd/. При попытке обновления антивирус выдавал сообщение о не найденном файле. Сейчас еще раз перечитал error.log апача у увидел, что, несмотря на то, что указана папка с обновлением /comodo_upd/, антивирус все равно долбится в корень:
[Thu Jul 25 19:36:05 2013] [error] [client 192.168.0.3] File does not exist: /var/www/av
[Thu Jul 25 19:36:12 2013] [error] [client 192.168.0.3] File does not exist: /var/www/cis
[Thu Jul 25 19:36:12 2013] [error] [client 192.168.0.3] File does not exist: /var/www/cis
[Thu Jul 25 19:36:13 2013] [error] [client 192.168.0.3] File does not exist: /var/www/cis
[Thu Jul 25 19:36:13 2013] [error] [client 192.168.0.3] File does not exist: /var/www/cis
[Thu Jul 25 19:36:13 2013] [error] [client 192.168.0.3] File does not exist: /var/www/cis
[Thu Jul 25 19:37:14 2013] [error] [client 192.168.0.3] File does not exist: /var/www/av
В итоге скинул все в корень сервера и все удачно обновилось. Только не понятно почему сервер ищет в корне, а не в каталоге.
Проблему решил создав виртуальный хост. 🙂
Автор, спасибо за хороший скрипт!!!
А можно конкретнее? Как создавали виртуальный хост?
Да, было и есть. Базы обновляются, а сама программа и база данных сайтов не может обновиться. У меня CIS последний.
Здравствуйте!
Можно ли каким-то образом сделать, чтобы скрипт мог скачивать обновления через прокси с авторизацией?
Конечно! Все файлы скачиваются с помощью программы wget. Поэтому нужно в его файл настроек (/etc/wgetrc) прописать команду использования прокси:
use_proxy = on
а так же прописать сам прокси:
http_proxy = http://имя:пароль@адрес_прокси:порт/
При обновлении версии 7.0.315459… базы обновляются, но при проверке наличия обновлений программы «Ошибка выполнения»
День добрый. А не могли бы вы допилить скриптик для обновлений Comodo CIS 7-й версии?
Добавил в версии ПО 2002. Вроде других не обнаружил на сервере Комодо. Но CIS все равно не хочет обновляться сама с локального сервера. И еще база сайтов тоже не обновляется. Просьба, допилите пожалуйста скрипт под полное обновление последнего CIS.
Присоединяюсь к предыдущему оратору! Админ, пилите скрипт =)
Кстати, посмотрел сейчас на базы… Общий файл базы смотрю тоже обновляется, который больше 100 метров весит. Вот сегодня в 10 утра обновился. При чем и для 55 и для 58 версии баз.
У вас обновляется нормально?
Ну как сказать нормально… Базы качаются, вижу по датам, что новые скачаны. А вот уже CIS на локальном компе с этих скачанных файлов берет только базы антивируса. А по базам сайтов и по программным модулям — ошибка. Не может найти файлы для обновления.
Хм. У меня скрипт берёт базы, но во время того, как закачивает, выдает много ошибок о том, что не доступны по ссылке «ERROR 404: NOT Found» и «ERROR 403: Forbidden».
Но это ладно, клиентские машины не хотят ни в какую брать обновления. Вы через Апач папки расшаривали? Как вообще настроили?
Напишите пожалуйста на insaneman87@mail.ru
Да, через апач. Положил в корень главного хоста, потому что сеть построена так, что имена виртуальных хостов не раздаются в сеть. Но это может позже решим. Короче, базы кладутся прям в корневой главный хост. А у клиентов настраивается обновление с http://ip-сервера.
А я положил не в корень, и в итоге не хотит
cat /etc/apache2/conf-available/comodo.conf
Alias /bases /mnt/data/distr/bases/
Options Indexes FollowSymLinks
Require all granted
На клиентских машинах просто пишет, что не может найти файл.
А я положил не в корень, и в итоге не хотит
cat /etc/apache2/conf-available/comodo.conf
Alias /bases /mnt/data/distr/bases/
Options Indexes FollowSymLinks
Require all granted
В общем победил следующим образом:
— создал в apache виртуальный хост на другом порту, в настройках которого прописал путь до папки с обновлениями:
cat /etc/apache2/sites-enabled/comodo.conf
DocumentRoot /mnt/data/distr/bases
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
На клиентских машинах путь до обновления указал в виде http://192.168.1.222:88/
Обновления скачиваются, но не устанавливаются из-за вот такой белеберды:
Not Found
The requested URL /cis/download/updates/release/inis_2001/release_notes.html was not found on this server.
всеравно трафик идет если в логах того же сквида посмотреть. Чтоб экономить трафик надо серваки комодо закрыть фаерволом для клиентив. Но в последнее время комодо не радует и чястенько сами комодовци чето с сервакими своими и с базами творят.
Добрый день, многоуважаемый автор! Спасибо за скрипт. Благодаря ему отказались от платного касперского в пользу бесплатного комодо в нашей школе. Год локальное обновление баз работало без изъянов, а теперь начались какие-то непонятки.На компьютерах клиентах база не обновляется. При обновлении пишет, что файл не найден или просит проверить подключение к интернету.
При запуске скрипта файлы закачиваются очень медленно. Основной затык на :
HTTP-запрос отправлен. Ожидание ответа… Подключение к cdn.download.comodo.com (cdn.download.comodo.com)|198.41.209.106|:80… соединение установлено.
HTTP-запрос отправлен. Ожидание ответа…
Думал сначало мало места на диске. Освободил место, а он за несколько дней базы так и не скачал. Файлы появляются но только во временных папках (tmp).
Интересно у меня одного так, или есть еще подобные случаи? Не хочется оставлять школу без защиты… ❓
К сожалению обновляется всё нормально. Я там выложил новую версию, с ней обновляется вообще идеально. Видимо, у вас проблема с каналом связи до комодовского сервера. Пинайте провайдера.
У меня тоже перестали обновляться клиентские компьютеры. Канал довольно плохой, возможно, не все скачивается. Скрип обновляет, но если файл битый, то он его оставляет. Счас пробую удалить все и заново закачать
Удалил все обновления с сервера, закачал заново — в итоге все равно не обновляются клиентские машины. Обновляться стали только после того как обновил до 7 версии
Запускаю скрипт на ubuntu —
/usr/local/bin/comodo_update.sh: 16: /usr/local/bin/comodo_update.sh: _VER[55]=1500: not found
/usr/local/bin/comodo_update.sh: 17: /usr/local/bin/comodo_update.sh: _VER[58]=1800 1850 2001 2002 3000 4000: not found
/usr/local/bin/comodo_update.sh: 20: /usr/local/bin/comodo_update.sh: function: not found
/usr/local/bin/comodo_update.sh: 21: local: not in a function
Чего хочет?
спасибо, всё работает!
Добрый день. Для клиентов Windows работает, но выдает такие ошибки — Проверка наличия обновлений распознавателей и Проверка наличия обновлений программы — ошибка выполнения. Может так и должно быть ? а клиент на Linux Mint вообще не видит сервера (((
Добрый день. С нетерпением ждем обновление для скрипта. Рад бы даже задонатить его развитие, но не знаю как (((
Спасибо автору!
Проблема как и у Владимира «Для клиентов Windows работает, но выдает такие ошибки — Проверка наличия обновлений распознавателей и Проверка наличия обновлений программы — ошибка выполнения»
Для Владимир и Кирилл.
Добавьте в конец строки «VER[58]= » 4055
Запускаю скрипт на ubuntu —
comodo_update.sh: 17: comodo_update.sh: _VER[58]=1850 2001 2002 3000 4000 4010 4020 4055 4075 : not found
comodo_update.sh: 20: comodo_update.sh: function: not found
comodo_update.sh: 21: local: not in a function
Этот скрипт написан для bash. У Вас, видимо, он запускается другим шеллом. Попробуйте установить bash или сделать bash основным интерпретатором.
Спасибо скрип заработал, скачал обновления, но при попытке comodo v8 скачать обновления с моего сервера. он видит-скачивает-обновляет сигнатуры. а вне остальное не видит, говорит не удается найти указанный файл:
ошибка — база данных сайтов
ошибка- обновление программы
ошибка — обновление распозвонателя
я добавил 4075 и обновились все остальное кроме базы данных сайтов
Проблема осталась:
Обновляется все кроме базы данных сайтов
Я так понимаю скрипт не качает отдельную ветку cis\cmc
Можете черкнуть инструкцию по объединению с nginx?
Запускаю скрипт коммандой:
bash updater.sh
Но почему-то случается затых в райндомных местах с фразой: ожидается использование унарного оператора
Спасибо! Пробу настроить локальный сервер в школе.
В скрипте строка
[ $CurrBase -ge $MinBase ] && MaxBase=$CurrBase
надо использовать кавычки — а то дает ошибку при первом запуске
[ «$CurrBase» -ge «$MinBase» ] && MaxBase=$CurrBase
Для последней версии (10) добавить в скрипт в строке VER[58]=»1850 2001 2002……» значение 5070
upd… последняя версия 5110
У меня CIS, обновляется гуд, и базы, и программа, кроме Viruscope!
Выход пока один, закоментить кусок…
Update Viruscope modules
RPATH=»recognizers/proto_v6″
mkdir -p $DIR/$RPATH >/dev/null 2>&1
# Get x32 header file from server
UPDATEXML32=cmdscope_update_x32.xml
$WGET $SERVER/$RPATH/$UPDATEXML32 -O $DIR/$RPATH/$UPDATEXML32
[ «$?» == «0» ] || return 1
# Get x64 header file from server
UPDATEXML64=cmdscope_update_x64.xml
$WGET $SERVER/$RPATH/$UPDATEXML64 -O $DIR/$RPATH/$UPDATEXML64
[ «$?» == «0» ] || return 1
Времени пока нет, надо покопать скриптик! 💡 💡 💡
Отличный скрипт, за что автору огромное спасибо.
Поделюсь и я своими наблюдениями.
1. У меня скрипт обновляет следующие версии:
_VER[58]=»1850 2001 2002 3000 4000 4010 4020 4055 4075 4096 5025 5045 5050 5060 5070 5080 5100 5110 5130 5140″
Конечно половина уже устарела, думаю можно начать этот массив и с 4055 и т.д. Кстати, возможно есть и промежуточные версии, о которых я не знаю, думаю и бог с ним, по крайней мере у меня все клиенты (15 компов) обновились сейчас не ниже 5025, смотрят на 5140 (по логам apache), но почему-то не обновляются на нее. Наверное нет необходимости.
2. To «KeMuRi» заметил, что Viruscope с какой то версии антивируса (с 4055 точно!!!) перешел на другую версию, а именно proto_v10 (ранее proto_v6), поэтому он у вас и не обновляется. Могу немного поправить закомментированный вами кусок. Можно либо просто поменять:
RPATH=»recognizers/proto_v6″ на RPATH=»recognizers/proto_v10″.
Либо ввести цикл в этот кусок, как сделано у меня для обновления и v6 и V10. Замените свой кусок вот этим.
#
# Update Viruscope modules
#
RPATH=»recognizers/proto_v»
RVER=»6 10″
for rv in $RVER; do
mkdir -p $DIR/$RPATH$rv >/dev/null 2>&1
# Get x32 header file from server
UPDATEXML32=cmdscope_update_x32.xml
$WGET $SERVER/$RPATH$rv/$UPDATEXML32 -O $DIR/$RPATH$rv/$UPDATEXML32
[ «$?» == «0» ] || continue
# Get x64 header file from server
UPDATEXML64=cmdscope_update_x64.xml
$WGET $SERVER/$RPATH$rv/$UPDATEXML64 -O $DIR/$RPATH$rv/$UPDATEXML64
[ «$?» == «0» ] || continue
# Extract values from xml file
cat $DIR/$RPATH$rv/$UPDATEXML32 $DIR/$RPATH$rv/$UPDATEXML64 | tr -d «\0» | sed ‘//d’ | sed ‘//d’ | grep -io ‘]*>’ | tr -d «\»» | while read str; do
fsrc=`echo $str | sed -ne ‘/.*src=\([^ ]*\).*/s//\1/p’`
fsha=`echo $str | sed -ne ‘/.*sha=\([^ ]*\).*/s//\1/p’`
[ «$fsha» = «0» ] && continue
if [ -r $DIR/$RPATH$rv/$fsrc ]; then
sha=`shasum -b $DIR/$RPATH$rv/$fsrc | sed -ne ‘/\([^ ]*\).*/s//\1/p’`
[ «$sha» = «$fsha» ] && continue
fi
mkdir -p `dirname $DIR/$RPATH$rv/$fsrc` >/dev/null 2>&1
$WGET $SERVER/$RPATH$rv/$fsrc -O $DIR/$RPATH$rv/$fsrc
done
done
У меня этот кусок отрабатывает нормально. Если на сервере comodo для определенной сборки антивируса дирректория proto_v6 отсутствует, то скрипт переходит к попытке скачать содержимое дирректории proto_v10.
3. Еще советую добавить в скрипт обновление некоторых файлов. Сделал этот для того, чтобы при принудительном запуске обновления comodo на компьютере окошко обновлений подсвечивалось зеленым (вместо красного) и не выдавалась ошибка «Файл не найден».
В конец скрипта перед exit 0 добавляем:
# Update delven.txt (instead deletedvendors.txt)
mkdir -p $DIR/av/tvl >/dev/null 2>&1
$WGET $SERVER/av/tvl/delven.txt -O $DIR/av/tvl/delven.txt
# Update install folder (2 main files)
mkdir -p $DIR/cis/download/installs/stl >/dev/null 2>&1
$WGET $SERVER/cis/download/installs/stl/whitelist.json -O $DIR/cis/download/installs/stl/whitelist.json
$WGET $SERVER/cis/download/installs/stl/authroot.stl -O $DIR/cis/download/installs/stl/authroot.stl
А еще иногда бывает, что клиентские компьютеры не могут обновить какой-либо компонент: базу или модуль; хотя на локальном сервере эти компоненты присутствуют.
Я наблюдал 2 таких косяка.
1. Клиенты не получают новые базы начиная с какой-то. Причина — комодовцы путают архиваторы, которыми жмут свои базы, вместо 7z ошибочно применяют просто zip. Внешне файл базы ничем себя не выдает, имя.расширение — все как обычно. Однако, клиенты не могут переварить такую базу, поскольку, видимо, попросту не умеет cis работать через zip. Выходом из этой ситуации является переупаковка базы на сервере вручную из zip в 7z. После этого все клиенты продолжают отлично обновляться.
2. Не обновляется на клиентах VirusScope. Причина: фактические размер и sha файла recognizerCryptolocker.dll (видимо база распознавателя) не совпадает с размером и sha, указанными в файлах cmdscope_update_x32.xml / cmdscope_update_x32.xml, которые, судя по всему comodo также скачивает, парсит и сверяет с вышеуказанной dll. Правка этих файлов к соответствующим значениям полностью устраняет ошибку обновления данного компонента.
После этого всего складывается не очень хорошее впечатление о comodo — сыроват, кривоват, и пилят его то ли студенты, то ли раздолбаи. Хотя может быть это плата за бесплатность…
*cmdscope_update_x32.xml / cmdscope_update_x64.xml
Спасибо за информацию!