Re: Зеркало обновлений NOD
Добавлено: 2008-04-08 16:58:08
Понял, сори ! .....
Тогда буду ждать ответа на мой вопрос )))
Пасиб
Тогда буду ждать ответа на мой вопрос )))
Пасиб
Чем глубже в песке твоя голова - тем беззащитнее жопа
https://forum.lissyara.su/
Код: Выделить всё
#!/bin/sh
DMASTER="/usr/local/bin/wget"
DMLOG="updatever.log"
TMPFILE="filelist.upd"
#Фраза по которой определяем что файл не изменен
PHRASE="Файл на сервере не новее локального файла"
BASEDIR_V3="/usr/local/www/***/***/***/mydomain.ru/nodbase/V3"
HOSTUP_V3="http://nod32.i-files.org/v3/"
#$1 - BASEDIR_V3
#$2 - HOSTUP
dUpdateVer(){
cd $1
$DMASTER -nd -m -o $DMLOG ${2}update.ver
if [ -z `fgrep "$PHRASE" $DMLOG | sed -n '$='` ]; then
dUpdateFl $2
else
echo "Обновления отсутствуют"
fi
}
dUpdateFl(){
fgrep "file=" update.ver | sed -e 's/file=//' > $TMPFILE
$DMASTER -np -N -nH -B $1 -i $TMPFILE
rm $TMPFILE
}
dUpdateVer $BASEDIR_V3 $HOSTUP_V3
exit 0
demondem10 писал(а):При тщательной проверке скрипта обнаружиль не соответствие регистра в названии конечной папки и поправил путь в правильном регистре!и все завелось как надо!Код: Выделить всё
#!/bin/sh DMASTER="/usr/local/bin/wget" DMLOG="updatever.log" TMPFILE="filelist.upd" #Фраза по которой определяем что файл не изменен PHRASE="Файл на сервере не новее локального файла" BASEDIR_V3="/usr/local/www/***/***/***/mydomain.ru/nodbase/V3" HOSTUP_V3="http://nod32.i-files.org/v3/" #$1 - BASEDIR_V3 #$2 - HOSTUP dUpdateVer(){ cd $1 $DMASTER -nd -m -o $DMLOG ${2}update.ver if [ -z `fgrep "$PHRASE" $DMLOG | sed -n '$='` ]; then dUpdateFl $2 else echo "Обновления отсутствуют" fi } dUpdateFl(){ fgrep "file=" update.ver | sed -e 's/file=//' > $TMPFILE $DMASTER -np -N -nH -B $1 -i $TMPFILE rm $TMPFILE } dUpdateVer $BASEDIR_V3 $HOSTUP_V3 exit 0
Вопрос снят все спасибо!
Код: Выделить всё
#!/usr/bin/perl
use LWP;
# path to store updates
$PATH="/home/www/mail.kk.com/nod";
$WGET="/usr/local/bin/wget"; # Путь к программе wget
# username/password for updates registered users
$LOGIN='AV-6327330';
$PASS='yt8jc2gyb9';
# URL for updates
$URL_UPD="http://u21.eset.com/";
$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/nod_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");
}
Как раздать людям єто мелочь.demondem10 писал(а):Да верно скрипт дергает с бесплатных источников обновления для 3 ветки, при необходимости конечно а не все подряд , проверяя нужно или нет? мне это подходит у меня ни ключа ни лицензий нет!
Скрипт для "бедных"
А вам нуна копать скрипт на perl ! он имеет возможность подставлять логины и пароли, а еще мона менять источники от куда качать! А зеркало можно организовать при помощи ftp и направить вывод файлов обновлений туда, или с помощью smb для локалки! это кому как фантазия подскажет! у меня вывот на http://www.xxx.ru/nodbase/
и клиенты все туды конектятся тоесть по http обновляются !
Может у тебя что-то толковое выйдет ... так как я что-то не могу побороть .. на сегодня меня хватит ужеmrAli писал(а):Использовал тот же скрипт что и Новое сообщение Dolphin_BSD. Для начачала долго ставил всевозможные LWP, после установки выкачал 180 метров обновлений для различных языков, придется переделывать скрипт..
Хочешь получать обновления для 3ки, а не 2ки? Решение простое:Dolphin_BSD писал(а): Может у тебя что-то толковое выйдет ... так как я что-то не могу побороть .. на сегодня меня хватит уже
Код: Выделить всё
download($PATH,"$URL_UPD/nod_upd/update.ver",$LOGIN,$PASS);
Код: Выделить всё
download($PATH,"$URL_UPD/eset_upd/update.ver",$LOGIN,$PASS);
Код: Выделить всё
unix# /usr/local/etc/rc.d/nod32.sh
--22:58:21-- http://u24.eset.com/eset_upd/update.ver
=> `/var/www/NOD32_v3/update.ver'
Resolving u24.eset.com... 89.202.157.134
Connecting to u24.eset.com|89.202.157.134|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2,215 (2.2K) [application/octet-stream]
100%[=================================================================================================================>] 2,215 --.--K/s
22:58:21 (853.63 KB/s) - `/var/www/NOD32_v3/update.ver' saved [2215/2215]
--22:58:21-- http://u24.eset.com/data0001
=> `/var/www/NOD32_v3/data0001'
Resolving u24.eset.com... 89.202.157.134
Connecting to u24.eset.com|89.202.157.134|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
22:58:22 ERROR 404: Not Found.
Код: Выделить всё
#!/usr/bin/perl
use LWP;
# path to store updates
$PATH="/export/www/nod";
# way to wget
$WGET="/usr/local/bin/wget";
# username/password for updates registered users
$LOGIN="EAV-XXXXXXXX";
$PASS="XXXXXXXXXX";
# URL for updates
$URL_UPD="http://u21.eset.com/";
$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/eset_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");
}
Код: Выделить всё
/usr/home/urgor/>cat ./nod3upd.pl
#!/usr/bin/perl
# path to store updates
$PATH="/home/www/mail.kk.com/nod3";
# Путь к программе wget
$WGET="/usr/local/bin/wget";
# username/password for updates registered users
$LOGIN='EAV-0265хххх';
$PASS='4v5xh6хххх';
# URL for updates
$URL_UPD='http://u37.eset.com/';
$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/eset_upd/update.ver",$LOGIN,$PASS);
system("/usr/local/bin/unrar e -y $PATH/update.ver $PATH");
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 = ();
$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;
$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");
}
Код: Выделить всё
HOSTUP_V3="http://nod32.i-files.org/v3/"
ну так проверь наличие /usr/local/bin/unrar и, если его нет, сделай cd /usr/ports/archivers/unrar && make install cleandemondem10 писал(а):яж говорю что папка зашарена на freebsd через ftp
Код: Выделить всё
/usr/local/nod32_upd_tools
Код: Выделить всё
$bases_path
Код: Выделить всё
#/usr/local/sbin/esets_update --username "имя" --password "пароль"
Код: Выделить всё
chomp $password;
Код: Выделить всё
system("/usr/local/sbin/esets_update --base-dir "наш путь" --mirror-dir "наш путь" --username $username --password $password --add-mod "ENGLISH:RUSSIAN">> $path/nod27.log");