Код: Выделить всё
ln -s /usr/local/bin/perl /usr/bin/perlКод: Выделить всё
ln -s /usr/local/bin/perl /usr/bin/perlКод: Выделить всё
# uname -a
FreeBSD cultura.local 7.2-RELEASE FreeBSD 7.2-RELEASE #1: Sat Jan  9 20:56:55 IRKT 2010     tray@cultura:/usr/obj/usr/src/sys/CULTURA.TRAY  i386Код: Выделить всё
   print "Script NSDN + Andy2k and Tray.irk\n";
   print "ICQ: 5861008\n";
   print "email: tray.irk@gmail.com\n";
}
close(AUTHFILE);Код: Выделить всё
system("echo "Update bases nod32 -> OK" | mail -S "Nod32" pupkin@vasia.com");Код: Выделить всё
system("echo "Update bases nod32 -> OK" | mail -S "Nod32" 79501299***@sms.bwc.ru");Код: Выделить всё
###
#
# debug
#
our $debug = 1;
# Config for google ajax search
# rus: http://code.google.com/intl/ru-RU/apis/ajaxsearch/documentation/reference.html#_intro_fonje
# eng: http://code.google.com/intl/en-EN/apis/ajaxsearch/documentation/reference.html#_intro_fonje
our $google_http = 'http://ajax.googleapis.com/ajax/services/search/blogs'; #Где мы ищем (описано по ссылки выши)
our $google_search = '?v=1.0&rsz=large&q=nod32+EAV-*+OR+AV-*+pass*'; #Сам запрос
our $google_referer = 'http://yandex.ru/yandsearch?text=nod32+key&lr=213'; #Гугл просит откуда приходим, подставляю что с яндекса
#
# Config Nod32
#
our @nod32_mirror = ('http://u42.eset.com/', 'http://u43.eset.com/', 'http://u43.eset.com/', 'http://u44.eset.com/', 
'http://u45.eset.com/', 'http://u46.eset.com/', 'http://u47.eset.com/', 'http://u48.eset.com/'); #список зеркал
our $nod32_test_key_file = '/download/engine3/em002_32_r0.nup'; #фаил на котором проверяем ключь
our @nod32_db = ( 'eset_upd', 'nod_upd', 'eset_upd/sky', 'eset_upd/pre', 'eset_upd/v4/pre', 'eset_upd/v4', 'eset_upd/v4/sky' ); #базы которые обнавлять
#
# Config for patch
#
our $path_nod32_auth = '/home/samba/hdd0/thefree/nod32.auth'; #где хранить ключ
our $path_nod32_base = '/home/samba/hdd0/thefree/www'; #куда кидать вся это (777 для папки)
our $path_unrar = '/usr/local/bin/unrar'; #где у нас рар
###Код: Выделить всё
# ./google.pl
EAV-***02650 - rk2bjhcbf3 - ok
EAV-***02651 - k4r3ejnsre - ok
EAV-***02722 - fxvcrbpsch - ok
EAV-***80471 - rhpe8h3svk - false
EAV-***80511 - a6ss2mm7mr - false
EAV-***80474 - adxf45cpnt - false
EAV-***80509 - jsbf33ms7u - false
EAV-255***09 - mtb423n2cr - false
EAV-241***23 - uaakunhc2s - false
EAV-***20016 - 7n7n2j4m5t - false
EAV-***03311 - k4btva6tj7 - false
EAV-***03314 - 6vhupvfpbf - false
EAV-24307*** - bbab6667uv - false
EAV-26***023 - rm6sn66u4d - ok
EAV-26360*** - ha6u222vc2 - ok
EAV-***71081 - 2e2nmjnhud - false
EAV-***71083 - 752kfd28v8 - falseне работает скрипт что то.....ошибку писал выше.обьясните все последовательность что и как делали.tray.irk писал(а):Тут народ требовал что бы приходило на мыло что обнова прошла ...
в nod32.sh
добавляем выше строк
строкуКод: Выделить всё
print "Script NSDN + Andy2k and Tray.irk\n"; print "ICQ: 5861008\n"; print "email: tray.irk@gmail.com\n"; } close(AUTHFILE);
хотя я сделал лучше ... в компаниях сотовой связи ... можно сделать что то типа тогоКод: Выделить всё
system("echo "Update bases nod32 -> OK" | mail -S "Nod32" pupkin@vasia.com");
при этом мне приходит смс на сотовый, что прошли обновыКод: Выделить всё
system("echo "Update bases nod32 -> OK" | mail -S "Nod32" 79501299***@sms.bwc.ru");
P.S. sms.bwc.ru - это адресс моего оператора связи. этот адресс нужно уточнить у вашего оператора сотовой связи ... и не все это поддерживают
на самом деле работает!как добавить к нему wget?вообще бы цены не было!thefree писал(а):Я сразу скажу, как это работает для меня досехпор загадка но так сложилась что я уперся в то что не обнавляли нужную версию нод32 для меня. Взял палки в руки и пошел делать сам.
Что этот скрипт делает, гуглит ищет ключи проверяет сохраняет их ... качает, выводит дебаг, сам создает директории если не хватает, проверяет версии и выкачивает для 7и версий обновления.
Вот его настройка (конфиг в самом файле)ВНИМАНИЕ ВСЕ ОБНАВЛЕНИЯ ВЕСЯТ 250МБКод: Выделить всё
### # # debug # our $debug = 1; # Config for google ajax search # rus: http://code.google.com/intl/ru-RU/apis/ajaxsearch/documentation/reference.html#_intro_fonje # eng: http://code.google.com/intl/en-EN/apis/ajaxsearch/documentation/reference.html#_intro_fonje our $google_http = 'http://ajax.googleapis.com/ajax/services/search/blogs'; #Где мы ищем (описано по ссылки выши) our $google_search = '?v=1.0&rsz=large&q=nod32+EAV-*+OR+AV-*+pass*'; #Сам запрос our $google_referer = 'http://yandex.ru/yandsearch?text=nod32+key&lr=213'; #Гугл просит откуда приходим, подставляю что с яндекса # # Config Nod32 # our @nod32_mirror = ('http://u42.eset.com/', 'http://u43.eset.com/', 'http://u43.eset.com/', 'http://u44.eset.com/', 'http://u45.eset.com/', 'http://u46.eset.com/', 'http://u47.eset.com/', 'http://u48.eset.com/'); #список зеркал our $nod32_test_key_file = '/download/engine3/em002_32_r0.nup'; #фаил на котором проверяем ключь our @nod32_db = ( 'eset_upd', 'nod_upd', 'eset_upd/sky', 'eset_upd/pre', 'eset_upd/v4/pre', 'eset_upd/v4', 'eset_upd/v4/sky' ); #базы которые обнавлять # # Config for patch # our $path_nod32_auth = '/home/samba/hdd0/thefree/nod32.auth'; #где хранить ключ our $path_nod32_base = '/home/samba/hdd0/thefree/www'; #куда кидать вся это (777 для папки) our $path_unrar = '/usr/local/bin/unrar'; #где у нас рар ###
Одним словам потестируйти плиз.
Во еще выбирает хост если не работает.
Нужны порты
_http://cvsweb.freebsd.org/ports/archivers/unrar
_http://cvsweb.freebsd.org/ports/www/p5-libwww
_http://cvsweb.freebsd.org/ports/converters/p5-JSON-Any
Запуск! Ставим права и поехали
ругается на use keys;server801 писал(а):модули доставлять надо?какие?Код: Выделить всё
./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.
Код: Выделить всё
use FindBin;
use lib $FindBin::Bin;
use keys;
#use lib::keys;неа не то ... не может найти keys.pm значит не срабатываетtray.irk писал(а):#cpan -i URI
#cpan -if LWP
Код: Выделить всё
use FindBin;
use lib $FindBin::Bin;
use keys;
#use lib::keys;я вот до сих пор не знаю что за порты заменяющие.как называются?#cpan -i URI
#cpan -if LWP
tray.irk писал(а):#cpan -i URI
#cpan -if LWP
Код: Выделить всё
./nod.pl
Undefined subroutine &keys::start called at ./nod.pl line 8.
Код: Выделить всё
lwp = _http://cvsweb.freebsd.org/ports/www/p5-libwwwКод: Выделить всё
Undefined subroutine &keys::start called at ./nod.pl line 8.Код: Выделить всё
#cpan -i URI
#cpan -if LWP
Код: Выделить всё
$PATH_DIR = "/usr/local/etc/script/nod32"; # тут дира где лежит сам скрипт
$PATH = "/usr/local/www/apache22/data"; # тут меняем на /дира_куда_будут_качаться_обновы
$TMP = "/usr/local/www/apache22/data/tmp"; # тут меняем на /дира_куда_будут_качаться_обновы/tmpКод: Выделить всё
 mkdir -p /usr/local/etc/script && mkdir -p /usr/local/etc/script/nod32
 mkdir -p /usr/local/www/apache22/data
 mkdir -p /usr/local/www/apache22/data/tmpКод: Выделить всё
#!/usr/bin/perl
use FindBin;
use lib $FindBin::Bin;
use keys;
keys::start();
open(AUTHFILE, "/usr/local/etc/script/nod32/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_DIR = "/usr/local/etc/script/nod32"; # тут дира где лежит сам скрипт
$PATH = "/usr/local/www/apache22/data"; # тут меняем на /дира_куда_будут_качаться_обновы
$TMP = "/usr/local/www/apache22/data/tmp"; # тут меняем на /дира_куда_будут_качаться_обновы/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);
#system("$PATH_DIR/mail.sh"); 
#если нужно отправить почтовое сообщение после обновления (для этого создадим в папке где лежит скрипт, файл mail.sh и 
#в него поместим 
#
##!/bin/sh
#echo "Update bases -> OK" | mail -s "NOD32" test@mail.com
#
#)
Код: Выделить всё
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;
Код: Выделить всё
touch nod32.key
Код: Выделить всё
chmod 777 nod.sh && chmod 777 keys.pm && chmod 777 nod32.key
Код: Выделить всё
./nod.sh
Код: Выделить всё
]# ./nod.sh
New key found!
 EAV-2*357***
 r*6sn****d
!!! New Key !!!username: EAV-2*357***password: r*6sn****dUsing http://u46.eset.com/nod_upd...
--2010-01-14 21:25:31--  http://u46.eset.com/nod_upd/update.ver
Распознаётся u46.eset.com... 90.183.101.16
Устанавливается соединение с u46.eset.com|90.183.101.16|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: 4080 (4,0K) [application/octet-stream]
Сохраняется в каталог: `/usr/local/www/apache22/data/nod_upd/update.ver'.
100%[===================================================================================================================>] 4 080       21,0K/s   в 0,2s
2010-01-14 21:25:31 (21,0 KB/s) - `/usr/local/www/apache22/data/nod_upd/update.ver' сохранён [4080/4080]
UNRAR 3.90 freeware      Copyright (c) 1993-2009 Alexander Roshal
Extracting from /usr/local/www/apache22/data/nod_upd/update.ver
Extracting  /usr/local/www/apache22/data/tmp/update.ver               OK
All OK
http://u46.eset.com/nod_upd Present --> /usr/local/www/apache22/data/download/win/v2/98admncz.nup       /download/win/v2/98admncz.nup   886636
http://u46.eset.com/nod_upd Present --> /usr/local/www/apache22/data/download/win/v2/ntadmnhr.nup       /download/win/v2/ntadmnhr.nup   663917
http://u46.eset.com/nod_upd Present --> /usr/local/www/apache22/data/download/win/v2/98inetpl.nup       /download/win/v2/98inetpl.nup   874437
http://u46.eset.com/nod_upd Present --> /usr/local/www/apache22/data/download/engine/engine0.nup        /download/engine/engine0.nup    12058855
http://u46.eset.com/nod_upd Present --> /usr/local/www/apache22/data/download/win/v2/98inethr.nup       /download/win/v2/98inethr.nup   643585
http://u46.eset.com/nod_upd Present --> /usr/local/www/apache22/data/download/win/v2/98ineten.nup       /download/win/v2/98ineten.nup   662080
http://u46.eset.com/nod_upd Present --> /usr/local/www/apache22/data/download/win/v2/ntsakcz.nup        /download/win/v2/ntsakcz.nup    635215
http://u46.eset.com/nod_upd Present --> /usr/local/www/apache22/data/download/win/v2/ntsakge.nup        /download/win/v2/ntsakge.nup    635064
http://u46.eset.com/nod_upd Present --> /usr/local/www/apache22/data/download/win/v2/98inetfr.nup       /download/win/v2/98inetfr.nup   911283
http://u46.eset.com/nod_upd Present --> /usr/local/www/apache22/data/download/win/v2/ntstdpt.nup        /download/win/v2/ntstdpt.nup    1373203
http://u46.eset.com/nod_upd Present --> /usr/local/www/apache22/data/download/win/v2/ntsaksp.nup        /download/win/v2/ntsaksp.nup    635465
http://u46.eset.com/nod_upd Present --> /usr/local/www/apache22/data/download/engine/charon2.nup        /download/engine/charon2.nup    944
http://u46.eset.com/nod_upd Present --> /usr/local/www/apache22/data/download/win/v2/98stdnl.nup        /download/win/v2/98stdnl.nup    1263556
http://u46.eset.com/nod_upd Present --> /usr/local/www/apache22/data/download/win/v2/ntsaken.nup        /download/win/v2/ntsaken.nup    628911
http://u46.eset.com/nod_upd Present --> /usr/local/www/apache22/data/download/win/v2/98inetpt.nup       /download/win/v2/98inetpt.nup   900563
Код: Выделить всё
0       18      *       *       *       root    /usr/local/etc/script/nod32/nod.sh
Код: Выделить всё
http://10.38.*.*/eset_upd/
Код: Выделить всё
 ./nod.sh
New key found!
 EAV-26162161
***********
!!! New Key !!!username: EAV-26162161password: ************Using http://u46.eset.com/nod_upd...
UNRAR 3.90 freeware      Copyright (c) 1993-2009 Alexander Roshal
Cannot open /usr/local/www/apache22/data/nod_upd/update.ver
Нет такого файла или каталога
No files to extract
Couldn't open /usr/local/www/apache22/data/tmp/nod_upd.ver for reading: Нет такого файла или каталога