Пользователь
0,0
рейтинг
4 августа 2014 в 20:14

Администрирование → Скрипт создания зеркала обновлений для Eset Nod32 на Linux

Если вы занимаетесь администрированием, велика вероятность что рано или поздно встанет вопрос — «На клиентских машинах стоит антивирус Nod32, надо бы создать для них единое зеркало обновлений». И тут возможны несколько путей развития сюжета:

  1. «Сервер на Windows, денег достаточно». Тут всё довольно просто — покупаем лицензию, ставим нужный дистрибутив Nod32 на сервер, настраиваем, радуемся. Вариант более мифический, так как крайне редко, когда на IT «денег достаточно».
  2. «Сервер на Windows, денег не достаточно». Тут возможны варианты. Начиная от использования варезных лицензий, до ручного скриптинга и использования Linux-решений (cygwin в помощь).
  3. «Сервер на Linux». Деньги в этом случае особого значения просто не имеют. У нас есть руки, есть голова, и есть желание сделать всё довольно качественно и надежно.

Вот про третий вариант мы сейчас и поговорим.


Что переобуется для работы?

  • Unix-система (тестировался на CentOS 7, FreeNas 9.3 и FreeBSD 8.3);
  • Bash (тестировался на версиях 4.1.11(2), 4.2.24(1) и 4.2.45(1));
  • Установленные curl, wget, unrar (опционально), и некоторые другие стандартные приложения.


Установка

  • Скачиваем крайнюю версию и распаковываем:
    $ cd /tmp
    $ wget https://github.com/tarampampam/nod32-update-mirror/archive/master.zip
    $ unzip master.zip; cd ./nod32-update-mirror-master/

  • Переносим набор скриптов в директорию недоступную «извне», но доступную для пользователя, который будет его запускать:
    $ mv -f ./nod32upd/ /home/

  • Переходим в новое расположение скриптов и выполняем их настройку (подробнее об этом в readme.md):
    $ cd /home/nod32upd/
    $ nano ./settings.cfg

  • Даем права на запуск скриптов:
    $ chmod +x ./*.sh

  • Проверяем наличие unrar, если планируем обновляться с официальных зеркал Eset NOD32:
    $ type -P unrar

  • Выполняем пробный запуск:
    $ ./update.sh


После всех этих манипуляций должны наблюдать что то похожее на:


Особенности

  • Комплектуется скриптом для автоматического получения рабочего ключа с «пиратских» ресурсов. ВНИМАНИЕ! ДАННЫЙ ФУНКЦИОНАЛ ТОЛЬКО ДЛЯ ОЗНАКОМЛЕНИЯ И ИЗУЧЕНИЯ! ВЫ САМИ НЕСЕТЕ ОТВЕТСТВЕННОСТЬ ЗА ЕГО ИСПОЛЬЗОВАНИЕ! ИСПОЛЬЗУЙТЕ ТОЛЬКО ЛЕГАЛЬНЫЕ И КУПЛЕННЫЕ ВАМИ КЛЮЧИ!
  • Если произошла ошибка при обновлении с сервера, который указан, например, в updServer0 — производится попытка обновиться с сервера, указанного в updServer1, updServer2..updServer10;
  • Скачивает только обновленные файлы обновлений (проверка выполняется с помощью wget --timestamping);
  • Работает только с нужными типами обновлений, нужным языком и обновлениями только для нужного ПО (без этого размер базы обновлений составляет чуть более чем 5,2Гб, с указанием типов — 0,6Гб);
  • Умеет поддерживать в актуальном состоянии только лишь файл update.ver, не скачивая сами файлы обновлений (при этом зеркало работает, но загрузка происходит не с вашего сервера, а с сервера-источника обновлений);
  • В комплекте идет заготовка для веб-интерфейса зеркала обновления (директория ./webface).


Лицензия MIT
Copyright © 2014 <github.com/tarampampam>

Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:

Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения.

ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.

Бонус ''Дистрибутив со встроенными настройками''
Тут всё очень просто. Кладем в одну папку 3 файла:


В config.small.xml указываем необходимые настройки:
<?xml version="1.0" encoding="utf-8"?>
<ESET>
 <SECTION ID="1000103">
  <SETTINGS>
   <PLUGINS>
    <PLUGIN ID="1000400">
     <PROFILES>
      <NODE NAME="Enable" VALUE="1" TYPE="DWORD" />
      <NODE NAME="Active" VALUE="@My profile" TYPE="STRING" />
      <NODE NAME="@My profile" TYPE="SUBNODE">
       <NODE NAME="UpdateType" VALUE="22" TYPE="DWORD" />
       <NODE NAME="SelectedServer" VALUE="%%url_updates_server%%" TYPE="STRING" />
       <NODE NAME="Username" VALUE="%%your_username%%" TYPE="STRING" />
       <NODE NAME="Password" VALUE="" TYPE="PASS" />
      </NODE>
     </PROFILES>
     <SETTINGS>
      <NODE NAME="RegistrationType" VALUE="0" TYPE="DWORD" />
      <SERVERS>
       <NODE NAME="Server_0" VALUE="%%url_updates_server%%" TYPE="STRING" />
      </SERVERS>
     </SETTINGS>
    </PLUGIN>
   </PLUGINS>
   <CLIENT>
    <NODE NAME="GraphicMode" VALUE="FFFFFFFF" TYPE="DWORD" />
    <NODE NAME="ShowSplash" VALUE="0" TYPE="DWORD" />
    <NODE NAME="SimpleMenu" VALUE="0" TYPE="DWORD" />
    <NODE NAME="AdvancedMenu" VALUE="1" TYPE="DWORD" />
   </CLIENT>
  </SETTINGS>
 </SECTION>
</ESET>

Где %%url_updates_server%% — в обоих случаях идентичны и равны адресу нашего сервера обновлений. Самый простой способ получить конфиг — Окно «ESET NOD32 Antivirus» → «Настройки» → «Импорт и экспорт параметров». Из получившего xml-файла удаляем всё, кроме необходимых настроек (благо все секции очень хорошо названы).

Далее скрипт установки install.cmd:
@echo off

title "Run ESET Nod32 Installer"
cls

set AppToRun=ESET_NOD32_Antivirus_4.2.71.3_(32-bit)_(rus).msi
set  CfgFile=config.small.xml

rem /qb - показывается процесс установки
rem /qn - тихий режим установки без gui

start "" "msiexec" /qb /package "%cd%\%AppPath%%AppToRun%" ADMINCFG="%cd%\%CfgPath%%CfgFile%"

@echo on


И всё это дело при помощи детища Евгения Рошала пакуется в SFX архив с параметрами:
Path=%TEMP%\Nod32Install\
Setup=%TEMP%\Nod32Install\install.cmd
Silent=1
Overwrite=1


Таким образом, при двойном клике по полученному бинарнику происходит тихая распаковка в %TEMP%\Nod32Install\, запускается install.cmd, который запускает установку ESET_NOD32_Antivirus_4.2.71.3_(32-bit)_(rus).msi с настройками из config.small.xml не спрашивая ничего у пользователя, но отображая процесс установки. Для малоопытных пользователей — самое то.




Если у вас есть какие-либо вопросы, но вы не можете оставлять комментарии к этому посту или написать мне в личку — пишите комментарии к этой записи.



Update: Пост был переписан 09.02.2015, т.к. его прошлая редакция потеряла актуальность в большей своей степени

Update: 09.07.2016 скрипт был переписан чуть менее чем полностью. Если вы использовали ранее старую версию — настоятельно рекомендую обновиться. Исходники там-же как и всегда — на гите
Paramtamtam @cmepthuk
карма
27,5
рейтинг 0,0
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (21)

  • 0
    Зачем такие сложности, если ESET Remote Administrator сам без проблем является зеркалом всем клиентам без дополнительных шаманств?
    Тем более что при крупных инсталляциях без него никуда — у нас в нем около 300 десктопов вертится и апдейтятся с него же без проблем. Я сам апологет линуксов, но зачем изобретать велосипед не пойму :) Разве что для пиратских серверов, действительно.
    • 0
      В самом начале поста было предположено 3 наиболее вероятных варианта. Мне кажется, что вы говорите о первом («Сервер на Windows, денег достаточно»), когда пост рассказывает о третьем («Сервер на Linux»).
      Если бы у Eset как раз был продукт для разворачивания зеркала под Linux — Ваш вопрос про «велосипед» был бы более чем оправдан. А пиратские серверы — ну вы же понимаете, только для тестов. Да :)
      • 0
        Нет, ну просто если ESET куплен уже, а стоит он достаточно дорого, то поднять виртуалочку на каком-нибудь Win7 с ESET RA это, по моему, на фоне общих затрат — копейки и никаких велосипедов. А так — плюс конечно за старания :) Но я лично предпочитаю что-то изобретать когда нет аналогов.
        • 0
          Если куплена лицензия на создание зеркала (не помню как правильно она называется), и есть рабочий сервер под Win — тогда всё работает как по маслу, разумеется.

          Если куплена лицензия на создание зеркала, но сервер на Linux — есть ли от неё смысл, если будет достаточно любой клиентской лицензии для получения и дальнейшей раздачи официальных обновлений? Более того — зачем её было приобретать вообще? Более того, слабо себе представляю сервер на Linux на котором крутится gui + wine или gui + virtualbox (ESET RA без gui не работает же?) для того, чтоб запустить ESET RA и раздать обновления при помощи купленной лицензии, которая (повторюсь) в случае с зеркалом на Linux не нужна.

          И вот встает вопрос «Что же лучше — дикий_костыль+затраты vs. некий „велосипед“?». В общем, я за второй вариант :)
  • 0
    Если куплена лицензия на создание зеркала (не помню как правильно она называется), и есть рабочий сервер под Win — тогда всё работает как по маслу, разумеется.

    Не надо там никаких дополнительных лицензий. Покупаешь лицензию нода на, скажем, 100 рабочих мест, ставишь ESET RA и радуешься — оно само качает апдейты и отдает клиентам. А «рабочий сервер под win» нынче не проблема — поднял виртуалку с гигом памяти и хватает. У вас же клиентские лицензии на win7 (где нод32 крутится) кулпены? В чем сложность еще одну под сервер управления отдать?

    Если куплена лицензия на создание зеркала (не помню как правильно она называется), и есть рабочий сервер под Win — тогда всё работает как по маслу, разумеется.

    Я еще раз спрошу — где дикий костыль-то? Если нод куплен, то всё делается штатно и без костылей, см. выше.
    • 0
      Давайте уже определимся с понятиями:
      Лицензий, на сколько я помню, существует 2 типа — для получения и раздачи обновлений. Первый тип — просто пара логин:пароль, второй тип — это .lic файл, необходимый для того, чтоб в «штатном» софте заработала функция «зеркала». Видимо это уже изменилось, судя по kb.

      Теперь давайте определимся, что говорим только про решение озвученного в посте вопроса на Linux и только.
      Для осуществления предложенного вами варианта необходимо чтоб на сервере в любом случае был gui + wine или virtualbox. Другими словами, перманентно отдать хренову кучу значительное количество памяти и ресурсов для того, что будет запускаться на 1 минуту 3 раза в сутки?
      • 0
        KVM не устраивает? И не надо никакого гуи на сервере.
  • 0
    Даже не знаю с чего начать.
    Вы решили поставленную задачу — круто.
    Информация полезна.

    Однако.
    Уже давно есть скрипт от mnk на php — ftp.volmed.org.ru/files/nod_upd_php_v1.14b.tar.bz2 (актуальная версия)
    Есть менее изящное решение NOD32 Update Viewer + «вино».
    Оба решения давно применяются, работают и поддерживаются.

    ERA+ERC применяется не столько для обновления сколько для управления. Создания зеркала это, грубо говоря, побочный эффект.
    • 0
      Видел видел, он сперва был на bash, а после — переписан на php. Не считаю необходимым запускать такую махину как php для того, что без проблем делает небольшой bash — этим и руководствовался. Да, на php удобнее и нагляднее (местами), возможностей больше и всякие свистелки прикручиваются в лёт, но… Зачем?
      • 0
        Как бы подразумевалось что все ровно есть\нужен Web и почему бы и не php. Можно конечно и в папку складывать, а затем расшарить ее.
        Вероятно мое мнение предвзято, так как mnk и UserNOD я знаю далеко не первый год… накладывает отпечаток.
  • 0
    Я в обновлениях NOD-а не разбираюсь, сразу скажу.
    Но вы уверены, например, что на их зонах файлы только появляются и обновляются, и никогда не удаляются? И ошметки чего-то старого, что должно было быть удалено штатным апдейтером, не положит ваши машины?
    Вопрос чисто житейский.
    • 0
      Нет, не положит, так как какой бы хлам не был в «папке с зеркалом» — антитварь читает 'update.ver', который, к слову, как раз и поддерживается в актуальном состоянии в принудительном порядке. «Хлам», при желании, можно сносить путем запуска скрипта с флагом "--flush", скажем, раз в неделю. Если оно требуется, конечно.
  • 0
    Было дело, строил свой скрипт для этого с функцией автоматического поиска триальных ключей в интернете.
    Все никак не могу в толк взять почему eset не сделала как kaspersky? Когда обновления стягиваются с обычного ftp без заморочек и сделать свое зеркало может любой.
    • 0
      Потому что лицензией является логин-пароль, который влияет только на процесс обновления. Если бы был простой и удобный доступ к серверам обновления или зеркалам, то лицензия бы вообще никому не была б нужна.
      • 0
        у касперского тоже есть лицензии и ничего сервера обновлений открыты
        • 0
          Каспер без лицензии работать отказывается полностью, защита системы отключается. Ноду же логин-пароль лишь для обновлений нужны (по крайней мере, до пятой версии было так, как сейчас — не в курсе). Именно поэтому поиск левых зеркал позволяет использовать нод полностью бесплатно в полнофункциональном режиме.
          • 0
            не в этом ли смысл лицензий? есть лицензия — программа работает, нет лицензии — извините.
  • 0
    велосипед. уже давно есть рабочее решение, которое и ключи в поисковиках само ищет.
    • +1
      Субъективно — у «решения» слишком много всего наворочено, и требует php. Нет, я не против его, но зачем, если можно сделать быстрее, компактнее, менее требовательнее и экономичнее относящееся к памяти и ресурсам? Хотя это на цифрах доказать сейчас не могу — не замерял. Есть желание — сделайте замеры, поделитесь с обществом.
  • 0
    image
    Хорошо прокомментированное написанным на коленке не считается ))

    Вообще, спасибо. Действительно, удобно организовать зеркало где-то на отдельной (не виндовой) машине по имеющейся лицензии.
  • 0
    А я писал свой код на php. Если кому интересно, можно прочитать про него тут: Зеркало обновлений ESET Nod32 (все версии).

    Если читать лениво, то кратко опишу для чего делал:

    — Чтобы было минимум телодвижений со стороны администратора
    — Всё работало автоматически и само раскладывалось по директориям
    — Чтобы работало на всем, в т.ч. и на минифайрволах типа pfSense.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.