Friday, December 28, 2018

Скрипт создания зеркала обновлений для 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));
  • Установленные curlwgetunrar (опционально), и некоторые другие стандартные приложения.


Установка

  • Скачиваем крайнюю версию и распаковываем:
    $ 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 — производится попытка обновиться с сервера, указанного в updServer1updServer2..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, т.к. его прошлая редакция потеряла актуальность в большей своей степени

No comments: