Проба пера: статья о создании зеркала для NOD32

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
server801
ст. лейтенант
Сообщения: 1421
Зарегистрирован: 2008-09-27 21:15:16
Откуда: Саратов
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение server801 » 2010-01-09 17:42:36

меняйте ключ,и перекачивайте

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение tray.irk » 2010-01-09 20:14:54

блин че то я уже ничего понять не могу ... киньте ссылку на 10000% рабочий скрипт ...
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
server801
ст. лейтенант
Сообщения: 1421
Зарегистрирован: 2008-09-27 21:15:16
Откуда: Саратов
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение server801 » 2010-01-09 21:09:50

у вас какая ОС? ну логи происходящего дайте!хрен знает что вы там творите!скрипт от HSDN написан только под фрю и работает не на одном зеркале без сбоев!на лине мне не удалось его завести...

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение tray.irk » 2010-01-10 4:48:10

Я так понял скрипт от HSDN без поиска ключей (( а хотелось бы с поиском )
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
server801
ст. лейтенант
Сообщения: 1421
Зарегистрирован: 2008-09-27 21:15:16
Откуда: Саратов
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение server801 » 2010-01-10 11:33:06

зато работает без проблем.да и нарыть ключи -вообще не проблема.у мея софтина есть под винду,которая сама ключи таскает.если хочешь с ключами то вот http://forum.lissyara.su/viewtopic.php? ... 64&start=0

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение tray.irk » 2010-01-10 11:47:02

ссылку которую вы дали .... там надо сверху наворотить мускуль и еще что то .... изначально скрипт в статье ведь ищет автоматом ключи .... почему тут нет ((((
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
server801
ст. лейтенант
Сообщения: 1421
Зарегистрирован: 2008-09-27 21:15:16
Откуда: Саратов
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение server801 » 2010-01-10 12:01:20

если вы тему бы почитали -то поняли что надо почистить старые нерабочие ключи ;-) за пару баксов легко могу настроить :-D

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение tray.irk » 2010-01-10 14:01:05

Народ короче решил я написать собственный ... точнее собрать из частей ....

в статье на сайте лежит архив ... там в архиже есть папка lib и в ней дежит keys.pm следующего содержания:

Код: Выделить всё

package keys;

use FindBin;
use lib $FindBin::Bin . "";
use strict;
use LWP::UserAgent;
use Data::Dumper;
use HTTP::Cookies;

our $page;
our $start = "";
our $advanced = 0;

if (defined($ARGV[0]) && defined($ARGV[1])) {
    chomp $ARGV[0];
    chomp $ARGV[1];
    robot("http://www.google.com/search?q=something");
    sleep 5;
    robot("http://google.com/sorry/Captcha?id=$ARGV[0]&captcha=$ARGV[1]&continue=http://www.google.com/search%3Fq%3Dnod32%2BEAV-*%2BOR%2BAV-*%26hl%3Den%26safe%3Doff%26as_qdr%3Dw");
}

sub start {
    if (!init()) {
        $advanced = 1;
        $page = 0;
        $start = "";
        init();
    }
}

sub init {
    my $status;
    my $google = "http://www.google.com/search?q=nod32+EAV-*+OR+AV-*&hl=en&safe=off&as_qdr=w";
    if (!$advanced) {
        $status = google($google.$start);
    } else {
        $status = google_advanced($google.$start);
    }
    $page += 10;
    $start = "&start=".$page;
    if ($page > 400) {return 0;}
    #Pause needed cause google is detecting bot
    sleep 2;
    if (!$status) {
        init();
    } else {
        return 1;
    }
}

sub google {
    my $google = shift(@_);
    if (!$google) {return 0};
    my ($content, @username, @part1, @part2, $success);
    my $ua = LWP::UserAgent->new(agent => 'Opera/9.25 (Windows NT 5.1; U; isp; ru)' ,
    'cookie_jar' => {file => "$FindBin::Bin/lib/lwpcookies.txt", autosave => 1, ignore_discard => 1});
    my $req = HTTP::Request->new(GET => $google);
    $req->header('Accept' => 'text/html');
    my $res = $ua->request($req);
    if ($res->is_success) {
        $content = $res->decoded_content;
    }
    else {
        main::logging ("Error: $res->status_line");
    }
    if ($content =~ /<title>403 Forbidden<\/title>/) {robot();}
    while ($content =~ /(eav-|av-)[<\/b>]*(\d+)/gi) {
        push(@username, $1.$2);
        push(@part2, $2);
    }
    for (my $i = 0; $i <= $#username; $i++) {
        if ($content =~ /$part2[$i].{0,10} *password:* *([a-z0-9]{10})/igs) {
            $success = test_key($username[$i], $1);
            if ($success) {return 1;}
        }
    }
    if (!$success) {
        return 0;
    }
}

sub test_key {
    my ($username, $password) = @_;
    my $ua = LWP::UserAgent->new;
    $ua->timeout(10);
    my $req = HTTP::Request->new(GET => "http://update.eset.com/download/engine3/em002_32_r0.nup");
    $req->authorization_basic($username, $password);
    my $res=$ua->request($req);
    my $status=$res->status_line;
    if ($status eq "200 OK") {
        open (AUTHFILE, ">$FindBin::Bin/lib/nod32.auth");
        print AUTHFILE "username=$username\npassword=$password";
        close AUTHFILE;
        main::logging("New key found! $username $password");
        return 1;
    } else {
        return 0;
    }
}

sub google_advanced {
    my $google = shift(@_);
    my ($content, $success);
    my $ua = LWP::UserAgent->new(agent => "Opera/9.25 (Windows NT 5.1; U; isp; ru)" ,
    'cookie_jar' => {file => "$FindBin::Bin/lib/lwpcookies.txt", autosave => 1, ignore_discard => 1});
    my $req = HTTP::Request->new(GET => $google);
    $req->header('Accept' => 'text/html');
    my $res = $ua->request($req);
    if ($res->is_success) {
        $content = $res->decoded_content;
    }
    else {
        main::logging("Error: $res->status_line");
    }
    if ($content =~ /<title>403 Forbidden<\/title>/) {robot()};
    my @pages = split("<div class=(?:g |g>)|<div id=navbar class=n>", $content);
    shift(@pages);pop(@pages);
    for (my $i = 0; $i <= $#pages; $i++) {
        if ($pages[$i] =~ /(?:eav-|av-)[<\/b>]*\d+/gi) {
            $pages[$i] =~ /\G.+<a class=fl href=\"(.+)\">Cached<\/a> -/;
            #Pause needed cause google is detecting bot
            sleep 2;
            google($1);
        }
    }
}

sub robot {
    my $google = "http://www.google.com/search?q=nod32+EAV-*+OR+AV-*&hl=en&safe=off&as_qdr=w";
    if (defined($_[0])) {$google = $_[0];}
    my ($content, $success);
    my $cookie_jar = HTTP::Cookies->new;
    my $ua = LWP::UserAgent->new(agent => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461)' ,
    'cookie_jar' => {file => "$FindBin::Bin/lib/lwpcookies.txt", autosave => 1, ignore_discard => 1});
    my $req = HTTP::Request->new(GET => $google);
    $cookie_jar->add_cookie_header($req);
    my $res = $ua->request($req);
    if ($res->is_success) {
        $content = $res->decoded_content;
    }
    else {
        main::logging ("Error: $res->status_line");
    }
    if (!defined($_[0])) {
        $content =~ /<img src=\"(\/sorry\/image\?id=)(\d+)\" border="1"/s;
        my $err = "Google detected robot. Open this link in browser: http://google.com$1$2 \nRun script with this parameters: perl upd.pl $2 letters_from_captcha_image";
        main::logging($err);
    }
    return;
}

1;
так вот вопрос, как переделать этот файлик ... что бы он работал самостоятельна? тоесть выполняем например

./keys.pm

и он в текстовый файл ложит ключик ...
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
server801
ст. лейтенант
Сообщения: 1421
Зарегистрирован: 2008-09-27 21:15:16
Откуда: Саратов
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение server801 » 2010-01-10 14:06:45

совет-не зная перла,лучше не лезьте.чем скрипты то не угодили?что не получается?

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение tray.irk » 2010-01-10 14:28:49

Народ ну разве никто ни переделывал скрипт? что бы работал без мускуля, но с поиском ключей
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение Alex Keda » 2010-01-10 20:08:19

лень
из 22 ключей что были в комплекте, работают ещё два последних
как тока перестанут - можно подумать и напилить своё.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение thefree » 2010-01-11 10:16:19

_http://forum.ru-board.com/topic.cgi?forum=35&topic=45154&start=20#15
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение Alex Keda » 2010-01-11 10:19:05

> Извините, гости не могут заходить в этот форум. Пожалуйста зарегистрируйтесь!.
зачем давать такие ссылки?
Убей их всех! Бог потом рассортирует...

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение thefree » 2010-01-11 10:30:36

да кто знал что там такая вещь?
Там предлагают rsync, просят не афишировать логин и пароль поэтому наверное и закрыли.
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение tray.irk » 2010-01-11 10:37:17

Что есть rsyns ? вопрос сейчас другого плана ... переделать малость конфиг ...
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение thefree » 2010-01-11 10:52:10

tray.irk писал(а):Что есть rsyns ? вопрос сейчас другого плана ... переделать малость конфиг ...
Проще переписать полностью скрипт
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение tray.irk » 2010-01-11 11:15:15

да зачем же ... есть ведь готовая часть скрипта ... как раз та часть которая ищет ключ и складывает в файл .... только его надо переделать в самостаятельный скрипт
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
server801
ст. лейтенант
Сообщения: 1421
Зарегистрирован: 2008-09-27 21:15:16
Откуда: Саратов
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение server801 » 2010-01-11 11:43:05

ребята!не надо изобретать велосипед!ключей нет?Nod_Gen_v.1.4 вам в помощь.не получится склеить несколько скриптов в один.почему я использую скрипт от HSDN-он единственный точно копирует содержание баз для нода,включая update.ver,весящий всего 3.5 килобайта,а не 40 как у других скриптов.по сути это архив.да и сделать так что б поставил и забыл-тоже не получится,нодовцы иногода прикалываются-пустой update.ver выкидывают.а вот чего не хватает -так это логирования и отправки на мыло,что неудобно.я вот сейчас работаю над тем чтоб после обновления -мне приходили на почту данные о том что происходило,что качало...но пока безуспешно.поставил ssmtp - вручную отправляет через гугловский ящик данные,все нормально.но вот в кроне не хочет почему то.

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение tray.irk » 2010-01-11 12:05:57

Ну почему же не получится то? еси изначально в статье все работает, и он ищет ключи ... а отправка почты (логирование) сделать что нить типа того

создать файлик например upd.sh в него вписать

Код: Выделить всё

#!/bin/sh
perl /путь до скрипта
echo "Прошло обновление!" | mail -s "NOD32" test@mail.ru
или же сделать вывод в perl фале ... что нить типа ... (на примере готового)

Код: Выделить всё

sub logging {
    if ($nolog) {return};
    open (LOGFILE, ">>$path/nod32.log");
    my $datetime = localtime (time);
    my $log = sprintf("%02d-%02d-%02d", $datetime->mday(), ($datetime->mon()+1), ($datetime->year()+1900))
    . sprintf(" %02d:%02d:%02d", $datetime->hour(), $datetime->min(), $datetime->sec()) . " " . $_[0] . "\n";
    print LOGFILE $log;
}
close LOGFILE;
а в том месте где надо выводить лог ... пишем main:logging "text" ..... кажись как то так, на 40% уверен ...
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
server801
ст. лейтенант
Сообщения: 1421
Зарегистрирован: 2008-09-27 21:15:16
Откуда: Саратов
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение server801 » 2010-01-11 12:17:20

вот и нужны спецы по перлу!Proftp надо припречь,он у нас гуру

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение tray.irk » 2010-01-11 18:06:34

Сайчас сижу переделываю скрипт ... уже почти близок ...

1) сделал поиск ключа
2) загрузка файлов

но блин ключ попадается дохлый ... и он его почему то пропускает (((
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение tray.irk » 2010-01-11 19:29:52

Всё!!!!!!!!! сделал :) пользуйтесь на здоровье ... ложим 2 скрипта такого содержания в какую нить диру ... и запускаем ))) только не забываем дать права скриптам при помощи chmod :)

Создавать диры не надо!!!! Он сам создаст!!!!!

Если есть вопросы, пишите ... ОТВЕЧУ :)

Код: Выделить всё

freebsd# cat keys.pm
package keys;

use FindBin;
use lib $FindBin::Bin . "";
use strict;
use LWP::UserAgent;
use Data::Dumper;
use HTTP::Cookies;

our $page;
our $start = "";
our $advanced = 0;

if (defined($ARGV[0]) && defined($ARGV[1])) {
    chomp $ARGV[0];
    chomp $ARGV[1];
    robot("http://www.google.com/search?q=something");
    sleep 5;
    robot("http://google.com/sorry/Captcha?id=$ARGV[0]&captcha=$ARGV[1]&continue=http://www.google.com/search%3Fq%3Dnod32%2BEAV-*%2BOR%2BAV-*%26hl%3Den%26safe%3Doff%26as_qdr%3Dw");
}

sub start {
    if (!init()) {
        $advanced = 1;
        $page = 0;
        $start = "";
        init();
    }
}

sub init {
    my $status;
    my $google = "http://www.google.com/search?q=nod32+EAV-*+OR+AV-*&hl=en&safe=off&as_qdr=w";
    if (!$advanced) {
        $status = google($google.$start);
    } else {
        $status = google_advanced($google.$start);
    }
    $page += 10;
    $start = "&start=".$page;
    if ($page > 400) {return 0;}
    #Pause needed cause google is detecting bot
    sleep 2;
    if (!$status) {
        init();
    } else {
        return 1;
    }
}

sub google {
    my $google = shift(@_);
    if (!$google) {return 0};
    my ($content, @username, @part1, @part2, $success);
    my $ua = LWP::UserAgent->new(agent => 'Opera/9.25 (Windows NT 5.1; U; isp; ru)' ,
    'cookie_jar' => {file => "$FindBin::Bin/lwpcookies.txt", autosave => 1, ignore_discard => 1});
    my $req = HTTP::Request->new(GET => $google);
    $req->header('Accept' => 'text/html');
    my $res = $ua->request($req);
    if ($res->is_success) {
        $content = $res->decoded_content;
    }
    else {
        print "Error: $res->status_line\n";
    }
    if ($content =~ /<title>403 Forbidden<\/title>/) {robot();}
    while ($content =~ /(eav-|av-)[<\/b>]*(\d+)/gi) {
        push(@username, $1.$2);
        push(@part2, $2);
    }
    for (my $i = 0; $i <= $#username; $i++) {
        if ($content =~ /$part2[$i].{0,10} *password:* *([a-z0-9]{10})/igs) {
            $success = test_key($username[$i], $1);
            if ($success) {return 1;}
        }
    }
    if (!$success) {
        return 0;
    }
}

sub test_key {
    my ($username, $password) = @_;
    my $ua = LWP::UserAgent->new;
    $ua->timeout(10);
    my $req = HTTP::Request->new(GET => "http://update.eset.com/download/engine3/em002_32_r0.nup");
    $req->authorization_basic($username, $password);
    my $res=$ua->request($req);
    my $status=$res->status_line;
    if ($status eq "200 OK") {
        open (AUTHFILE, ">$FindBin::Bin/nod32.key");
        print AUTHFILE "username=$username\npassword=$password";
        close AUTHFILE;
        print "New key found!\n $username\n $password\n";
        return 1;
    } else {
        return 0;
    }
}

sub google_advanced {
    my $google = shift(@_);
    my ($content, $success);
    my $ua = LWP::UserAgent->new(agent => "Opera/9.25 (Windows NT 5.1; U; isp; ru)" ,
    'cookie_jar' => {file => "$FindBin::Bin/lwpcookies.txt", autosave => 1, ignore_discard => 1});
    my $req = HTTP::Request->new(GET => $google);
    $req->header('Accept' => 'text/html');
    my $res = $ua->request($req);
    if ($res->is_success) {
        $content = $res->decoded_content;
    }
    else {
        print "Error: $res->status_line\n";
    }
    if ($content =~ /<title>403 Forbidden<\/title>/) {robot()};
    my @pages = split("<div class=(?:g |g>)|<div id=navbar class=n>", $content);
    shift(@pages);pop(@pages);
    for (my $i = 0; $i <= $#pages; $i++) {
        if ($pages[$i] =~ /(?:eav-|av-)[<\/b>]*\d+/gi) {
            $pages[$i] =~ /\G.+<a class=fl href=\"(.+)\">Cached<\/a> -/;
            #Pause needed cause google is detecting bot
            sleep 2;
            google($1);
        }
    }
}

sub robot {
    my $google = "http://www.google.com/search?q=nod32+EAV-*+OR+AV-*&hl=en&safe=off&as_qdr=w";
    if (defined($_[0])) {$google = $_[0];}
    my ($content, $success);
    my $cookie_jar = HTTP::Cookies->new;
    my $ua = LWP::UserAgent->new(agent => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461)' ,
    'cookie_jar' => {file => "$FindBin::Bin/lwpcookies.txt", autosave => 1, ignore_discard => 1});
    my $req = HTTP::Request->new(GET => $google);
    $cookie_jar->add_cookie_header($req);
    my $res = $ua->request($req);
    if ($res->is_success) {
        $content = $res->decoded_content;
    }
    else {
        print "Error: $res->status_line\n";
    }
    if (!defined($_[0])) {
        $content =~ /<img src=\"(\/sorry\/image\?id=)(\d+)\" border="1"/s;
        my $err = "Google detected robot. Open this link in browser: http://google.com$1$2 \nRun script with this parameters: perl upd.pl $2 letters_from_captcha_image";
        print "$err\n";
    }
    return;
}

1;

Код: Выделить всё

freebsd# cat nod32.sh
#!/usr/bin/perl

use FindBin;
use lib $FindBin::Bin;
use keys;
#use lib::keys;

keys::start();
open(AUTHFILE, "/home/tray/1/nod32.key"); # тут меняем на /дира_где_лежит_скрипт/nod32.key
print "!!! New Key !!!";
$LOGIN = <AUTHFILE>;
$LOGIN =~ s/username=//;
chomp $LOGIN;
print "username: $LOGIN";
$PASS = <AUTHFILE>;
$PASS =~ s/password=//;
chomp $PASS;
print "password: $PASS";


$PATH = "/home/tray/1"; # тут меняем на /дира_где_лежит_скрипт
$TMP = "/home/tray/1/tmp"; # тут меняем на /дира_где_лежит_скрипт/tmp

system("mkdir -p $TMP");

%servers = (
   'http://u46.eset.com',
   'http://u21.eset.com'
);

%versions = ("nod_upd","eset_upd");

foreach $URL_UPD (%servers)
{
   if($URL_UPD)
   {
      foreach $NUPD (%versions)
      {
         if($NUPD)
         {
            print "Using $URL_UPD/$NUPD...\n";

            unlink("$TMP/$NUPD.ver","$PATH/$NUPD/update.ver");
            download($PATH,"$URL_UPD/$NUPD/update.ver","/$NUPD/update.ver",$LOGIN,$PASS);
            system("/usr/local/bin/unrar e -y $PATH/$NUPD/update.ver $TMP");
            rename("$TMP/update.ver","$TMP/$NUPD.ver");

            $ver = "$TMP/$NUPD.ver";

            open(VER, "< $ver") or die "Couldn't open $ver for reading: $!\n";

            %files = ();
            %urls = ();

            $end = 0;

            while (defined($line = <VER>) )
            {
               chomp $line;

               if ($line =~ /COMPATLIST/)
               {
                  $end = 1;
               }

               if ($end == 0)
               {
                  ($par,$val) = split /=/, $line;

                  $val = substr($val, 0, -1);

                  if ($par =~ /file/ )
                  {
                     $name = $val;
                     $furl = "$URL_UPD$val";
                     $line = "file=$name";
                  }

                  if ($par =~/size/ )
                  {
                     $size = $val;
                     $files{$name} = $size;
                     $urls{$name} = "$furl";
                  }
               }
            }
            print "\n";

            close(VER);

            foreach $f (keys %files)
            {
               if ((-s "$PATH$f") != $files{$f})
               {
                  $size = (-s "$PATH$f");
                  print "$URL_UPD/$NUPD Not present --> $PATH$f\t$f\t$files{$f} ---> $size\n";
                  unlink("$PATH$f");
                  download($PATH,$urls{$f},$f,$LOGIN,$PASS);
               }
               else
               {
                  print "$URL_UPD/$NUPD Present --> $PATH$f\t$f\t$files{$f}\n";
               }
            }

            chmod(0644,"$PATH/*");

            sub download()
            {
               my ($path, $url, $f, $LOGIN, $PASS) = @_;
               $dir = $f;
               $dir =~s/^(.*)\/(.*)$/$1/;

               system("mkdir -p $path$dir");
               system("/usr/local/bin/wget -P $path$dir --proxy-user=user --http-user=$LOGIN --http-password=$PASS $url");
            }
         }
      }
   }
   print "Script NSDN + Andy2k and Tray.irk\n";
   print "ICQ: 5861008\n";
   print "email: tray.irk@gmail.com\n";
}
close(AUTHFILE);

:drinks:
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
server801
ст. лейтенант
Сообщения: 1421
Зарегистрирован: 2008-09-27 21:15:16
Откуда: Саратов
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение server801 » 2010-01-11 19:56:48

Код: Выделить всё

./nod32.sh
Can't locate keys.pm in @INC (@INC contains: /usr/home/raven/test /usr/local/lib/perl5/5.8.9/BSDPAN /usr/local/lib/perl5/site_perl/5.8.9/mach /usr/local/lib/perl5/site_perl/5.8.9 /usr/local/lib/perl5/5.8.9/mach /usr/local/lib/perl5/5.8.9 .) at ./nod32.sh line 5.
BEGIN failed--compilation aborted at ./nod32.sh line 5.
модули доставлять надо?какие?

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение ProFTP » 2010-01-11 21:19:04

путь к keys.pm

не может найти

use lib $FindBin::Bin . "";

напиши тут

use lib '///';
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Проба пера: статья о создании зеркала для NOD32

Непрочитанное сообщение tray.irk » 2010-01-12 2:32:54

Ни чего добавлять не надо .... все работает! Сегодня проверю на другой машине ... и отпишусь
Числа не управляют миром, но могут показать как управляется мир