Есть у кого-либо что-то похожее на то, что могло бы перекачивать обновления с 1 сервера к себе?В инете нашлось:
#!/bin/shexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export HTTP_PROXY=your_proxy:3128
export HTTP_PROXY_AUTH=basic:*:your-user:your-passupserver="u5.eset.com"
cd /usr/local/www/data/nod32
fetch -v http://${upserver}/nod_eval/update.ver
mv -f update.ver update.rar
unrar x -y update.rar
fsize=`stat -f "%z" update.ver`
while [ ${fsize} -lt 3000 ]; do
sleep 20
fetch -v http://${upserver}/nod_eval/update.ver
mv -f update.ver update.rar
unrar x -y update.rar
fsize=`stat -f "%z" update.ver`
done
sed s/\\/eval\\/engine/\\/nod32\\/eval\\/engine/ update.ver > update.tmp
dos2unix update.ver
cd eval/enginefiles=`grep "file=" ../../update.ver|sed s/file=//`
for upfile in ${files}; do
fetch -v http://${upserver}${upfile}
donecd ../..
mv -f update.tmp update.ver
rm -f update.rarfind /usr/local/www/data/nod32/ -type d -exec chmod 755 {} \;
find /usr/local/www/data/nod32/ -type f -exec chmod 644 {} \;но явно ругается на %z
stat: невозможно считать информацию файловой системы для `%z': No such file or directory
Вот это у меня работает
#!/bin/bashWGET=`which wget`
WGET_OPT="-N --cache=off"
MV=`which mv`
RM=`which rm`
FIND=`which find`
SED=`which sed`
CONVERT=`which dos2unix`
UNPACK=`which unrar`
CHMOD=`which chmod`
MIN_FSIZE=1000SERVER="http://u26.eset.com"
cd /var/www/html/nod32
$WGET $WGET_OPT $SERVER/nod_eval/update.ver
$MV -f update.ver update.rar
$UNPACK x -y update.rarFSIZE=`du -b update.ver|awk '{if($1~/[0-9]/) print $1}'`
while [ $FSIZE -lt $MIN_FSIZE ]; do
sleep 20
$WGET $WGET_OPT $SERVER/nod_eval/update.ver
$MV -f update.ver update.rar
$UNPACK x -y update.rar
FSIZE=`du -b update.ver|awk '{if($1~/[0-9]/) print $1}'`
done$SED s/\\/eval\\/engine/\\/nod32\\/eval\\/engine/ update.ver > update.tmp
$CONVERT update.verFILES=`grep "file=" /var/www/html/nod32/update.ver|sed s/file=//`
for UPDFILES in $FILES; do
$WGET $WGET_OPT $SERVER$UPDFILES
done$MV -f update.tmp update.ver
$RM -f update.rar
$FIND /var/www/html/nod32/ -type f -exec chmod 644 {} \;
для ворования обнов в версии 3.0 есть какие мысли?подскажите, откуда они качаются и по какому принципу, пожалуйста...
>для ворования обнов в версии 3.0 есть какие мысли?
>
>подскажите, откуда они качаются и по какому принципу, пожалуйста...#!/usr/bin/perl
use LWP;# path to store updates
$PATH="/var/www/nod32/eset_upd";
# username/password for updates registered users
$LOGIN="AV-7009043";
$PASS="vu34kgnc4a";
# URL for updates
$URL_UPD="http://u30.eset.com/eset_upd/";$URL_UPD =~ s/\/$//;
$URL_UPD =~ m/(.*:\/\/)(.*?)(\/.*)/;
$site = "$1$2";
if ($site =~ m//) {
print "Enter correct URL\n";
return;
}
unlink("$PATH/update.ver","$PATH/update.tmp");
download($PATH,"$URL_UPD/update.ver",$LOGIN,$PASS);
`/usr/bin/unrar e -y $PATH/update.ver $PATH 2> /dev/null`;
rename("$PATH/update.ver","$PATH/update.tmp");
$ver = "$PATH/update.tmp";
$vers = "$PATH/update.ver";
open(VER, "< $ver") or die "Couldn't open $ver for reading: $!\n";
open(VERS, "> $vers") or die "Couldn't open $vers for writing: $!\n";
%files = ();
%urls = ();
while (defined($line = <VER>) )
{
chomp $line;
$line =~ s/^\s+//;
$line =~ s/\s+$//;
($par,$val)=split /=/, $line;
if ($par =~ /file/ )
{
$name = $val;
$name =~ s/\/.*\///;
if ($name=~m/$val/) {$furl="$URL_UPD/$val";}
else {$furl="$site$val";}
$line="file=$name";
}
if ($par =~ /size/ )
{
$size = $val;
$files{$name} = $size;
$urls{$name} = "$furl";
}
print VERS "$line\r\n";
}
print "\n";
close(VER);
close(VERS);
foreach $f (keys %files) {
if ( (-s ("$PATH/$f")) != $files{$f}){
download($PATH,$urls{$f},$LOGIN,$PASS);
}
}
chmod(0644,"$PATH/*");
sub download()
{
my ($path, $url, $login, $pass) = @_;
# use external downloader
system("/usr/bin/lftp -c \"get -cO $path $url\"");
return;
# PERL downloader
$url =~ m/(.*:\/\/)(.*)\/(.*)/;
my $filename = $3;
my $ua=LWP::UserAgent->new();
$ua->agent("PerlUA/0.1");
my $ua=LWP::UserAgent->new();
$ua->agent("PerlUA/0.1");
my $req = HTTP::Request->new(HEAD => "$url");
$req->authorization_basic($login, $pass);
my $document=$ua->request($req);
if($document->is_success) {
if (!($document->content_length== -s("$path/$filename"))) {
my $req = HTTP::Request->new(GET => "$url");
$req->authorization_basic('login', 'password');
my $document=$ua->request($req);
if($document->is_success) {
open(OUT, "> $path/$filename");
print OUT $document->content;
close(OUT);
print "Downloading $url ";
print "- ok\n";
}
else {
print "$url ",$document->status_line,"\n";
}
}
else {
# print "$filename - exist\n";
}
}
else {
print "$url ",$document->status_line,"\n";
}
}
Почему-то не работает:
get: Ошибка доступа: 401 Authorization Required (/download/engine3/em002_32_n3.nup)
get: Ошибка доступа: 401 Authorization Required (/download/engine3/em004_32_l1.nup)
get: Ошибка доступа: 401 Authorization Required (/download/engine3/em004_32_n7.nup)
get: Ошибка доступа: 401 Authorization Required (/download/engine3/em003_32_n4.nup)
get: Ошибка доступа: 401 Authorization Required (/download/engine3/em011_32_l1.nup)
get: Ошибка доступа: 401 Authorization Required (/download/engine3/em008_32_n7.nup)
get: Ошибка доступа: 401 Authorization Required (/download/engine3/em002_32_n1.nup)
get: Ошибка доступа: 401 Authorization Required (/download/engine3/em002_32_l2.nup)Что не так с авторизацией в этом скрипте? Логин и пароль подходят к сайту, если например из браузера качать http://u30.eset.com/download/engine3/em011_32_n1.nup
my $req = HTTP::Request->new(GET => "$url");
$req->authorization_basic('login', 'password');
Эти строчки тебе не кажутся подозрительными ?
Кажется надо вот так, а потом креститься
$req->authorization_basic($login, $password);
Ребята, ну что вы ерундой занимаетесь. Eset уже все за вас придумала. Устанавливаем esets.i386.tgz.bin (ищите сами или обращайтесь, вышлю). Там есть утилитка esets_update и подробный ман с конфигами.
Sorry, в верхнем посте был неправильный мыльник.
# PERL downloader
$url =~ m/(.*:\/\/)(.*)\/(.*)/;
my $filename = $3;
my $ua=LWP::UserAgent->new();
$ua->agent("NOD32/0.1");
my $req = HTTP::Request->new(HEAD => "$url");
$req->authorization_basic($login, $pass);
my $document=$ua->request($req);
if($document->is_success) {
if (!($document->content_length== -s("$path/$filename"))) {
my $req = HTTP::Request->new(GET => "$url");
$req->authorization_basic('login', 'password');
my $document=$ua->request($req);
if($document->is_success) {
open(OUT, "> $path/$filename");
print OUT $document->content;
close(OUT);
print "Downloading $url ";
print "- ok\n";
}
else {
print "$url ",$document->status_line,"\n";
}
}
else {
print "$filename - exist\n";
}
}
else {
print "$url ",$document->status_line,"\n";
}
А как тут сделать, чтобы в случае, если файл уже существует, он перезаписывался на новоскаченный?
В NOD32 3.0 у файлов баз одинаковые имена сделали.
Пришлите пожалуйста esets.i386.tgz.bin. Очень надо!
>Пришлите пожалуйста esets.i386.tgz.bin. Очень надо!http://download1.eset.com/special/esetsbeta/esets.i386.tgz.bin
Вот такой скрипт использую для стягивания апдейтов с других открытых зеркал и перезаливки на свой сервер по ftp.#!/bin/sh
${N32UPATH}
N32UPATH=/etc/nod32update
${N32USERVER}
N32USERVER="cs1.cyberpe.org:8081""
rm -rf ${N32UPATH}/updates/*
wget http://${N32USERVER}/update.ver -P ${N32UPATH}/updates
rm -rf ${N32UPATH}/ffd.txt
cat ${N32UPATH}/updates/update.ver | grep file | sed 's/file=/http:\/\/'${N32US$
wget -i ${N32UPATH}/ffd.txt -P ${N32UPATH}/updates
ncftpput -f ${N32UPATH}/login.cfg / ${N32UPATH}/updates/*На текущий момент стягиваются и перезаливаются все файлы апдейтов, планирую оптимизировать, что бы перезаливались только новые.
Теперь стягиваются с сервера и заливаются на зеркало только новые файлы.#!/bin/sh
N32UPATH=/etc/nod32update
N32USERVER="cs1.cyberpe.org:8081"
N32USERVER_FW="cs1.cyberpe.org:8081"'
rm ${N32UPATH}/updates/update.ver
ls ${N32UPATH}/updates/ > checkold.txt
wget http://${N32USERVER}/update.ver -P ${N32UPATH}/updates/
rm -rf ${N32UPATH}/ffd.txt
cat ${N32UPATH}/updates/update.ver | grep file | sed 's/file=/http:\/\/'${N32USERVER_FW}'\//' > ${N32UPATH}/ffd.txt
wget -i ${N32UPATH}/ffd.txt -N -P ${N32UPATH}/updates/
cd ${N32UPATH}/updates/
cp `ls ${N32UPATH}/updates/ | grep -v -f ${N32UPATH}/checkold.txt` ${N32UPATH}/newupdates/
ncftpput -R -f ${N32UPATH}/login.cfg / ${N32UPATH}/newupdates/*
mv ${N32UPATH}/newupdates/* ${N32UPATH}/updates/
>ls ${N32UPATH}/updates/ > checkold.txtПохоже, перед checkold.txt должно быть ${N32UPATH}/
Вот вариант на php сейчас доступна новая стабильная версия, документация и сообщество тут
http://forum.lissyara.su/viewtopic.php?f=3&t=32285&start=225