Скрипт по обновлению антивирусных баз NOD32 под Linux (PHP): различия между версиями
Misha (обсуждение | вклад) (→Что умеет скрипт.) |
Misha (обсуждение | вклад) (→Инсталяция) |
||
Строка 48: | Строка 48: | ||
# '''setup.php''' - Файл установок | # '''setup.php''' - Файл установок | ||
==Инсталяция== | ==Инсталяция== | ||
− | #Устанавливаем пакеты '''php-cli.*.rpm''' и '''php-rar*.rpm'''. | + | #Устанавливаем пакеты '''php-cli.*.rpm''' и '''php-rar*.rpm'''. Для версии 1.9в нужен '''php-curl*.rpm'''. |
##Если нет пакета '''php-rar*.rpm''', можно установить [[Скрипт по обновлению антивирусных баз NOD32 под Linux (BASH)#Установка RAR | RAR для Linux]]. | ##Если нет пакета '''php-rar*.rpm''', можно установить [[Скрипт по обновлению антивирусных баз NOD32 под Linux (BASH)#Установка RAR | RAR для Linux]]. | ||
− | #Выкачиваем архив [ftp://ftp.volmed.org.ru/files/nod_upd_php_v1.8a.tar.bz2 nod_upd_php_v1.8a.tar.bz2] и распаковываем в любой каталог, например, '''/etc/upd_prog/'''. | + | #Выкачиваем архив [ftp://ftp.volmed.org.ru/files/nod_upd_php_v1.8a.tar.bz2 nod_upd_php_v1.8a.tar.bz2] ([ftp://ftp.volmed.org.ru/files/nod_upd_php_v1.9b.tar.bz2 nod_upd_php_v1.9b.tar.bz2]) и распаковываем в любой каталог, например, '''/etc/upd_prog/'''. |
# Редактируем файл '''setup.php''' для каждого варианта антивируса - Устанавливаем: | # Редактируем файл '''setup.php''' для каждого варианта антивируса - Устанавливаем: | ||
##Измените, если нужно, путь до папки, где будут храниться временные файлы работы скрипта, например (define("DEFAULT_SAVE_PATH","/var/lib/nod32");). | ##Измените, если нужно, путь до папки, где будут храниться временные файлы работы скрипта, например (define("DEFAULT_SAVE_PATH","/var/lib/nod32");). | ||
− | ##Отредактируйте, если нужно, имя пользователя от которого работает WEB сервер, например | + | ##Отредактируйте, если нужно, имя пользователя от которого работает WEB сервер, например, '''define("HTTP_USER", "apache");'''. |
##Если нужна, дополнительная отправка почты, то разкоментируйте строку с переменной '''$user_mail''' и укажите там нужный '''email'''. (Но при этом дб настроен и запущен почтовый сервер (postfix, sendmail или другой).) | ##Если нужна, дополнительная отправка почты, то разкоментируйте строку с переменной '''$user_mail''' и укажите там нужный '''email'''. (Но при этом дб настроен и запущен почтовый сервер (postfix, sendmail или другой).) | ||
− | ##Если Вы хотите или должны использовать '''HTTP-Proxy''', пожалуйста, разкоментируйте строку с переменной '''$proxy''' и укажите свои параметры Прокси сервера, например | + | ##Если Вы хотите или должны использовать '''HTTP-Proxy''', пожалуйста, разкоментируйте строку с переменной '''$proxy''' и укажите свои параметры Прокси сервера, например, '''$proxy = 'http://vasya:qwerty@www.rrr.ru:8080';'''. |
− | ##Если Вы используете | + | ## Если Вы используете Прокси сервер с аутентификацией (требуются имя и пароль для Прокси), то укажите путь до '''wget''' в переменной '''$wget''' (только для версии 1.8). |
− | ##Если Вы используете '''Прокси''' сервер с аутентификацией и Вам не нужен вывод подробной информации от '''wget''', то разкоментируйте строку с переменной $quiet. Вместо значения '''-q''', можно установить '''-nv''' (см man wget). | + | ##Если Вы используете '''Прокси''' сервер с аутентификацией и Вам не нужен вывод подробной информации от '''wget''', то разкоментируйте строку с переменной '''$quiet'''. Вместо значения '''-q''', можно установить '''-nv''' (см man wget)(только для версии 1.8). |
− | ##Адрес сервера, например ('host'=>'http://89.202.157.139/',) | + | ## Установите '''$quit=1''' - не отображать сообщения на консоли, кроме сообщений об ошибках и '''$quit=0''' - отображать сообщения на консоли (только для версии 1.9в). |
− | ##Web каталог для каждой версии баз, например | + | ##Адрес сервера, например ('host'=>'http://89.202.157.139/',). Если он не указан (только для v1.9в), то список серверов берется из '''update.ver''' (для официальных серверов), если указан, то закачка происходит только с него. |
− | ##Имя пользователя, например | + | ##Web каталог для каждой версии баз, например, ''''www'=>'/var/www/nod32/','''. |
− | ##Пароль, например | + | ##Имя пользователя, например, ''''user'=>'EAV-06545664',''' или ''''user'=>"",''' - для бесплатных серверов |
+ | ##Пароль, например, ''''password'=>'k3fp7ksv8e',''' или ''''password'=>"",''' - для бесплатных серверов | ||
#Пробуем из под root запустить файл update.php. | #Пробуем из под root запустить файл update.php. | ||
#Теперь в '''crontab''' прописываем запуск скрипта | #Теперь в '''crontab''' прописываем запуск скрипта | ||
<pre># Обновление баз NOD32* | <pre># Обновление баз NOD32* | ||
− | 00 09,15 * * * root /etc/upd_prog/update.php | + | 00 09,15 * * * root /etc/upd_prog/php/update.php |
</pre> и наслаждаемся автоматическим обновлением 2 раза в сутки | </pre> и наслаждаемся автоматическим обновлением 2 раза в сутки | ||
==[[Скрипт по обновлению антивирусных баз NOD32 под Linux (BASH)#Настройка сервера Apache для доступа к базам по паролю |Настройка сервера Apache для доступа к базам по паролю]]== | ==[[Скрипт по обновлению антивирусных баз NOD32 под Linux (BASH)#Настройка сервера Apache для доступа к базам по паролю |Настройка сервера Apache для доступа к базам по паролю]]== |
Версия 07:52, 8 июля 2009
Вот портировал скрипты по обновлению антивирусных баз NOD32 V2* и V3* в PHP.
Содержание
Версии скрипта
Буду тут выкладывать описание версий с датами для более удобного отслеживания за изменениями
- Версия 1.9b от 11.07.2009
- Закачка через wget изменена на php-cURL.
- Добавлен тихий режим, без отправки сообщений в консоль, если критических ошибок нет
- Если сервер указан, то пытается обновится только с него. Если не указан сервер (это касается только тех кто обновляется с официальных серверов), то список серверов берется из update.ver и скрипт пробует обновить базы с каждого сервера из этого списка, пока не получится. А то иногда бывает проблема с серверами (похоже из-за их перегрузки) - то их видно, то нет.
- Версия 1.8 от 1.07.2009
- Добавлена возможность закачивать файлы через прокси сервер с аутентификацией и без нее.
- Добавлена возможность отсылки дополнительного письма об обновлении баз на указанный п/я, в случае ошибки или удачного обновления с изменением версии.
- Версия 1.7 от 24.06.2009
- Имя пользователя, от которого работает WEB сервер вынесено в setup.php
- В начале скрипта umask меняется на 0022, а после выполнения возвращается на ту, что была до его выполнения.
- Версия 1.6 от 19.06.2009
- Если происходит ошибка при выкачивании файла, то обновление сразу завершается и восстанавливает базу данной версии Нода, которая была до этого. Раньше скрипт пытался выкачивать остальные файлы, а потом все равно происходило восстановление.
- Версия 1.5 от 16.03.2009 Теперь можно обновлять базы для NOD32 V4.
- Добавлены секции, которых не было в вервии V3 [SYSTEMSTATUS0], [SYSTEMSTATUS1],[SYSTEMSTATUS2],[SYSTEMSTATUS640],[SYSTEMSTATUS641],[SYSTEMSTATUS642],[SELFDEFENSE0],[SELFDEFENSE1],[SELFDEFENSE2],[SELFDEFENSE640],[SELFDEFENSE641],[SELFDEFENSE642]. Обновляется только файл секций section.php.
- Версия 1.4 от 21.01.2009
- Исправлена ошибка записи имени файла в создаваемой update.ver, если этого файла еще не было.
- Версия 1.3 от 16.01.2009
- Если при обновлении NOD32 V2 происходила ошибка, то она не сбрасывалась и для NOD32 V3
- Не правильно формировался блок [data0001] в файле update.ver в NOD32 V3, если в этой секции встречался знак =.
- Убрано отображение некоторых ненужных сообщений.
- Версия 1.2 от 2.12.2008
- Исправлено удаление файла, если он уже не нужен
- Версия 1.1 от 18.11.2008
- Первая версия.
Что умеет скрипт.
Умеет все тоже, что и скрипт на bash, только работает быстрее, один скрипт может обновлять обе версии и можно использовать на любой платформе (сам не пробовал) .
- Обновляет базы с официальных и бесплатных серверов NOD32 (для официальных серверов нужно задать имя и пароль для обновления). Причем, при обновлении с бесплатных серверов скрипт пробует обновится со всех серверов, указанных в update.ver и прекращает работу при первом удачном обновлении.
- Может работать через прокси сервер с аутентификацией и без нее.
- Может отправлять сообщение на указанный п/я с информацией об ошибке или при удачном обновлении с изменением версии базы.
- Обновляет сразу базы для V2 и V3, но может и отдельно.
- Если на сервере названия файлов не совпадают с локальными - не качает, а переименовывает файлы.
- Сам создает файл update.ver. Те при обновлении с зеркал обновляются только компоненты с более новыми версиями.
- Автоматически создает папки, нужные для работы программы, в том числе и для Web сервера.
- Создает папку на веб сервере с файлами обновления.
- При ошибке обновления восстанавливает базу в том виде, которая была до обновления.
Скрипт автоматически создает папки для временного хранения копий баз /var/lib/nod32/mirror_V2 и /var/lib/nod32/mirror_V3 и загружает туда файлы антивирусных баз. Если обновление прошло успешно, то переписывает базы в WEB директорию, а если произошла ошибка, то наоборот, восстанавливает базы, переписывая их из WEB директории в папку временного хранения.
Спасибо Kode - использовал его функции. Так как не очень большой спец в PHP, то прошу не пинать, а если можно то помочь доработать.
Из чего состоит
- update.php - Сам скрипт
- function.php - Файл функций
- section.php - Файл описания секций
- setup.php - Файл установок
Инсталяция
- Устанавливаем пакеты php-cli.*.rpm и php-rar*.rpm. Для версии 1.9в нужен php-curl*.rpm.
- Если нет пакета php-rar*.rpm, можно установить RAR для Linux.
- Выкачиваем архив nod_upd_php_v1.8a.tar.bz2 (nod_upd_php_v1.9b.tar.bz2) и распаковываем в любой каталог, например, /etc/upd_prog/.
- Редактируем файл setup.php для каждого варианта антивируса - Устанавливаем:
- Измените, если нужно, путь до папки, где будут храниться временные файлы работы скрипта, например (define("DEFAULT_SAVE_PATH","/var/lib/nod32");).
- Отредактируйте, если нужно, имя пользователя от которого работает WEB сервер, например, define("HTTP_USER", "apache");.
- Если нужна, дополнительная отправка почты, то разкоментируйте строку с переменной $user_mail и укажите там нужный email. (Но при этом дб настроен и запущен почтовый сервер (postfix, sendmail или другой).)
- Если Вы хотите или должны использовать HTTP-Proxy, пожалуйста, разкоментируйте строку с переменной $proxy и укажите свои параметры Прокси сервера, например, $proxy = 'http://vasya:qwerty@www.rrr.ru:8080';.
- Если Вы используете Прокси сервер с аутентификацией (требуются имя и пароль для Прокси), то укажите путь до wget в переменной $wget (только для версии 1.8).
- Если Вы используете Прокси сервер с аутентификацией и Вам не нужен вывод подробной информации от wget, то разкоментируйте строку с переменной $quiet. Вместо значения -q, можно установить -nv (см man wget)(только для версии 1.8).
- Установите $quit=1 - не отображать сообщения на консоли, кроме сообщений об ошибках и $quit=0 - отображать сообщения на консоли (только для версии 1.9в).
- Адрес сервера, например ('host'=>'http://89.202.157.139/',). Если он не указан (только для v1.9в), то список серверов берется из update.ver (для официальных серверов), если указан, то закачка происходит только с него.
- Web каталог для каждой версии баз, например, 'www'=>'/var/www/nod32/',.
- Имя пользователя, например, 'user'=>'EAV-06545664', или 'user'=>"", - для бесплатных серверов
- Пароль, например, 'password'=>'k3fp7ksv8e', или 'password'=>"", - для бесплатных серверов
- Пробуем из под root запустить файл update.php.
- Теперь в crontab прописываем запуск скрипта
# Обновление баз NOD32* 00 09,15 * * * root /etc/upd_prog/php/update.php
и наслаждаемся автоматическим обновлением 2 раза в сутки