Код: Выделить всё
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: Нет такого файла или каталога