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



Код: Выделить всё
#!/usr/bin/perl
use LWP;
# path to store updates
$PATH="/usr/local/www/data";
# way to wget
$WGET="/usr/local/bin/wget";
# username/password for updates registered users
#$LOGIN="EAV-04170633";
#$PASS="a4ju642rvv";
# URL for updates
$URL_UPD="http://nod3.petabyte.ru/";
$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/local/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;
($par,$val)=split /=/, $line;
$val = substr($val, 0, -1);
if ($par =~ /file/ )
{
$name = '/'.$val;
$name =~s/\/.*\///;
$furl="$URL_UPD/$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}){
# $size = (-s "$PATH/$f");
# print "Not present --> $PATH/$f\t$f\t$files{$f} ---> $size\n";
unlink("$PATH/$f");
download($PATH,$urls{$f},$LOGIN,$PASS);
} else { #print " Present --> $PATH/$f\t$f\t$files{$f}\n";
}
}
chmod(0644,"$PATH/*");
sub download()
{
my ($path, $url, $login, $pass) = @_;
system("$WGET -P $path --http-user=$login --http-password=$pass
$url");
}
Код: Выделить всё
system("$WGET -P $path --http-user=$login --http-password=$pass $url");
Код: Выделить всё
system("$WGET -P $path $url");
У меня также ругалось после того как я удалил все папки которые сам создал скрипт. Вторично почему-то он их создать не смог. Сам добавил руками с все заработало.. попробуй создать eset_upd и download ( в папке довнлоад нужно еще создать engine3 & engine3ess) (в скрипте можно посмотреть)binmode() on closed filehandle F at /usr/local/nod32/upd.pl line 116, <AUTHFILE> line 10.
print() on closed filehandle F at /usr/local/nod32/upd.pl line 117, <AUTHFILE> line 10.
binmode() on closed filehandle F at /usr/local/nod32/upd.pl line 116, <AUTHFILE> line 10.
print() on closed filehandle F at /usr/local/nod32/upd.pl line 117, <AUTHFILE> line 10.
binmode() on closed filehandle F at /usr/local/nod32/upd.pl line 116, <AUTHFILE> line 10.
Код: Выделить всё
Use of uninitialized value in split at ./upd.pl line 116.
--2008-09-02 03:22:48-- http://update.eset.com//eset_updupdate.ver
Resolving update.eset.com... 90.183.101.14, 90.183.101.16, 90.183.101.10, ...
Connecting to update.eset.com|90.183.101.14|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2008-09-02 03:22:48 ERROR 404: Not Found.
Use of uninitialized value in split at ./upd.pl line 116.
Код: Выделить всё
-16:40:40-- http://update.eset.com/eset_updupdate.ver
=> `/var/db/eset_mirror/eset_updupdate.ver'
Resolving update.eset.com... 90.183.101.15, 90.183.101.16, 90.183.101.17, ...
Connecting to update.eset.com[90.183.101.15]:80... connected.
HTTP request sent, awaiting response... 404 Not Found
16:40:40 ERROR 404: Not Found.
Код: Выделить всё
Can't locate object method "decoded_content" via package "HTTP::Headers" at (eval 20) line 1.
Код: Выделить всё
games1# /usr/local/www/eset_www/update_eset.sh
Use of uninitialized value in concatenation (.) or string at /usr/local/eset/lib/keys.pm line 146.
Use of uninitialized value in concatenation (.) or string at /usr/local/eset/lib/keys.pm line 146.
Use of uninitialized value in concatenation (.) or string at /usr/local/eset/lib/keys.pm line 146.
Use of uninitialized value in concatenation (.) or string at /usr/local/eset/lib/keys.pm line 146.
Use of uninitialized value in concatenation (.) or string at /usr/local/eset/lib/keys.pm line 146.
Use of uninitialized value in concatenation (.) or string at /usr/local/eset/lib/keys.pm line 146.
Работает отменно, НО заметил два НО:NiTr0 писал(а):Подпилил скрипт отсюда. Основные изменения:P.S. выявил и поправил кое-какие мелкие баги
- Апдейтит как 2, так и 3 версию; для v2 - можно указать языки программных модулей, которые будут копироваться (думаю, мало кому нужен апдейт для китайской версии
), и ессно можно отключить апдейт для 2 или 3 версии "галочкой"
- При ошибке получения файла - не сохраняет битое нечто как файло апдейта, а просто игнорит
- Проверка не версий, а билдов (т.к. может быть теоретически свежее билд той же версии - во всяком случае, номер билда всегда больше номера версии, когда - на пару единиц, когда - на сотни, в зависимости от пакета)
- Теперь проверяется размер файлов не только для старых файлов, но и для файлов текущей версии (на случай кривого файла на исходном зеркале, недокачанного файла и т.д.)
- Сделано "умное" создание директорий (т.е. - директория создается тогда и только тогда, когда в нее требуется поместить файло - раньше было создание набора директорий при первом запуске по глупому условию)
- Выбор детализации логов (если откл детализацию - убираются сообщения о проверке сервера и о том, что на у нас база не старее чем на сервере)
- Прочие мелкие фиксы (касательно апдейтера, в "кейген" не лез ибо пока не глючил
)
только что переименовал update.ver - получил: couldn't open the v2/update.ver!FenX писал(а):1. Проверил у себя - всё замечательно качается и создаётся.
какая "эта"? подозреваю, что Вы меня не до конца поняли...FenX писал(а):2. Эта проблема была со всеми предложенными скриптами
Код: Выделить всё
Use of uninitialized value in concatenation (.) or string at /usr/local/etc/nod-upd/lib/keys.pm line 146.
Use of uninitialized value in concatenation (.) or string at /usr/local/etc/nod-upd/lib/keys.pm line 146.
Use of uninitialized value in concatenation (.) or string at /usr/local/etc/nod-upd/lib/keys.pm line 146.