Окончательно обленился и решил автоматизировать поиск валидных ключей для сервера обновлений. Файл конфигурации имеет следующий вид:
<?php
define("DEFAULT_SAVE_PATH","/var/lib/nod32");
define("HTTP_USER", "www-data");
$unrar='/usr/bin/unrar';
$download_pr="wget";
$user_mail="no-reply@server.tld";
$quiet=1;
$servers = array(
array(
'www'=>'/var/www/eset_upd/',
'user'=>'EAV-12345678',
'password'=>'a1b2c3d4e5',
'all_in_one'=>1,
'compons' => array(
'0'=>'en',
'1'=>'ru',
),
'ess'=> 1,
'type' => 'V3',
),
);
?>
Как видно, в конфигурации указываются юзернейм и пароль. Их и следует заменять при истечении валидности ключа. Для автоматизации замены написан следующий bash скрипт:
#!/bin/bash
wget -qO- http://www.nod321.cn/ | grep -E '\*{6}' | sed 's/\*\*\*\*\*\*/:/g' | perl -ne 'print "$1\n" while /((?:EAV|TRIAL)-\d{8}:[a-z0-8]{10})/g' | xargs -L 1 | \
while read line
do
if (curl -IfsN http://$line@89.202.149.36/download/engine3/em002_32_l2.nup | grep OK >/dev/null); then
eval $(echo $line | awk -F: '{printf "%s", "sed -i -e \"s/\047user\047=>.*,/\047user\047=>\047"$1"\047,/g\" -e \"s/\047password\047=>.*,/\047password\047=>\047"$2"\047,/g\" setup.php"}')
exit
fi
done
Смотрит на код ответа сервера, методично перебирая ключи с сервера nod321. Первый найденный валидный ключ формирует строку для sed, которая затем и выполняется через eval.
Существует дополнительный скрипт, который по крону наблюдает за успешностью обновления, ориентируясь по логам. Он и запускает, при небходимости, скрипт получения новых ключей.