среда, 20 апреля 2011 г.

Скрипт обновления Comodo опять обновился

На самом деле скрипт обновился давно, руки не доходили выложить

7zip теперь не требуется. Сервер просто не распаковывает скачанные обновления, т.к. в моей сети не осталось антивирусов старых версий.
Как правильно подсказали, в скрипте имеются bash-зависимые выражения. Нужно иметь в виду при использовании других оболочек. Обязательно нужно проверить, не является ли /bin/bash символьной ссылкой на что-нибудь.
В процессе работы создает lock-файл в каталоге /tmp. Поэтому при неожиданном прерывании работы нужно не забыть вычистить lock-файл.
#!/bin/bash

COMODO=/var/www/html
CPATH=/av/updates53

[ ! -f /tmp/comodo.lock ] && (
 touch /tmp/comodo.lock
 [ -f $COMODO$CPATH/versioninfo.ini ] && cp -f $COMODO$CPATH/versioninfo.ini{,.prev}

 cd $COMODO$CPATH
 wget --timeout=5 -N http://downloads.comodo.com/$CPATH/versioninfo.ini && (
  BASE=$(grep MaxBase $COMODO$CPATH/versioninfo.ini| grep -oE '[0-9]+')
  [ ! -f $COMODO/av/updates53/sigs/bases/BASE_END_USER_v$BASE.cav.z ] && (
   cd $COMODO$CPATH/sigs/bases
   wget --timeout=5 -nc http://downloads.comodo.com/$CPATH/sigs/bases/BASE_END_USER_v$BASE.cav.z && echo "$(date +'%Y.%m.%d %H:%M') Получена база N$BASE">>$COMODO/report
  )

 let OLD_UPDATE=$(grep MaxAvail $COMODO$CPATH/versioninfo.ini.prev| grep -oE '[0-9]+')+1
 [ $BASE -gt $OLD_UPDATE ] && let OLD_UPDATE=$BASE+1

 NEW_UPDATE=$(grep MaxAvail $COMODO$CPATH/versioninfo.ini| grep -oE '[0-9]+')
 cd $COMODO$CPATH/sigs/updates

 for i in $(seq $OLD_UPDATE $NEW_UPDATE); do
  wget --timeout=5 -nc http://downloads.comodo.com/$CPATH/sigs/updates/BASE_UPD_END_USER_v$i.cav.z && echo "$(date +'%Y.%m.%d %H:%M') Полученно обновление N$i">>$COMODO/report
 done

 ) || ( echo "Скачать versioninfo.ini не удалось">>$COMODO/report ; exit 1 )
 rm -f /tmp/comodo.lock )

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

  1. Где-то ошибочка строка 30.
    ) || ( echo "Скачать versioninfo.ini не удалось">>$COMODO/report ; exit 1 )

    ОтветитьУдалить
  2. Возможно shell другой. Уже писали, что скрипт слишком завязан на bash. Буду в той конторе, где скрипт работает, погляжу.

    А какая ошибка? Что пишет?

    ОтветитьУдалить
  3. Когда копипастил скрипт, пропустил скобку на последней строке, потому и ругался.

    ОтветитьУдалить
  4. Спасибо, все работает.
    Есть одно НО: Я переносил базы на новый linux-сервер, сделал ему тот же адрес, что был на старом, то есть на клиентских машинах теоретически ничего менять не пришлось. Так вот: клиентские машины не могут теперь с него обновиться, антивирус ругается, что не может обновиться и просит проверить мое интернет соединение.
    ПЕРЕУСТАНОВКА антивируса решает проблему, но клиентских машин много, и переустановка означает большие потери времени.
    Может приходилось сталкиваться? Возможно уже есть решение?

    ОтветитьУдалить
  5. Иногда на некоторых машинах антивирь перестает обновляться, пишет "не удалось обновить базы, проверьте подключение к интернету", хотя у него в настройках указан мой локальный сервер обновлений (рабочий). Переустановка решает проблему, но можно ли как-то обойтись без нее?

    ОтветитьУдалить
  6. Надо смотреть в логах web-сервера. Антивирус запрашивает какой-то файл, которого нет на сервере. Ну и посмотреть, что это за файл. Иногда появляются новые версии и они ищут обновления уже в новых папках. Т.е. updates53, updates54 и т.д., нужно создавать симлинки.

    ОтветитьУдалить
  7. Да, это верно, у меня есть симлинк на папку updates55 и CIS версии 5.5 (текущий) с нее обновляется, но опять же через пару дней возникает та же проблема. Он перестает обновляться, ругается на соединение. Переустанавливаю с нуля либо даю ему один раз слазить в инет за обновлениями баз, после чего он спокойно продолжает обновляться с локалки какое-то время.
    Кстати, свежеустановленный CIS так же способен обновляться с локалки какое-то время (то есть для первого обновления он лезет в локалку и радостно скачивает огромный файл базы и много мелких). Но вот почему это не работает ПОСТОЯННО?

    ОтветитьУдалить
  8. вот тут http://forums.comodo.com/empty-t47164.0.html пишут, что для версии 6.0 обновления качать нужно с директории http://download.Comodo.com/av/updates58/sigs/bases.

    Или вы пользуетесь пятой?

    ОтветитьУдалить
  9. К сожалению (или к счастью) сейчас совершенно не пересекаюсь с виндовыми машинами, поэтому очень давно не занимался антивирусами. И связь с предприятием, где работала такая штука, была утеряна после увольнения человека, который заменил меня при увольнении. Поэтому не знаю, работает ли это хоть где-нибудь сейчас вообще.

    ОтветитьУдалить