Перейти к содержимому


Фото
- - - - -

Создание зеркала обновлений на Linux сервере для Windows машин


  • Please log in to reply
203 ответов в этой теме

#101 Konstantin Yudin

Konstantin Yudin

    Смотрящий

  • Dr.Web Staff
  • 19 552 Сообщений:

Отправлено 21 Апрель 2010 - 15:19

MD5 of key-file /home/op/src/drweb/key/drweb32.key =

Spoiler


Это Вы больше не показывайте никому ;-)

Key Number of User /home/op/src/drweb/key/drweb32.key = xxxxxxxxxx
404 Not Found (file http://update.drweb.com/x86/600/sspace/drweb32.lst)
can't open /home/op/src/drweb/600/drweb32.lst (Нет такого файла или каталога)

Скажите, а зона обновлений указана верно: http://update.drweb.com/x86/600/sspace ?

а /windows кто будет добавлять?

Сообщение было изменено Borka: 21 Апрель 2010 - 22:20
исправлено

With best regards, Konstantin Yudin
Doctor Web, Ltd.

#102 oldzren

oldzren

    Newbie

  • Posters
  • 10 Сообщений:

Отправлено 11 Июнь 2010 - 11:29

У меня работало вот так:
#!/usr/bin/perl -w
use Digest::MD5;
use LWP::UserAgent;
use Compress::Zlib;
use strict;
my $basedir  = '/tmp/update/600'; # folder from which windows-agents is updating
my $drwebkey = '/opt/drweb/drweb32.key'; # path to drweb key-file
my $tmpdir   = '/tmp'; # directory for temporary files
my $url	  = 'http://update.drweb.com/x86/600/sspace/windows'; # one of upgrade zone of Dr. Web
........................................................................
		$ua->agent("DrWebUpdate-6.0.1.4070 (windows: 6.00.1.04070)");
а теперь в Windows просит drweb32.flg. Где брать?

Сообщение было изменено oldzren: 11 Июнь 2010 - 11:49


#103 Borka

Borka

    Забанен за флуд

  • Members
  • 19 512 Сообщений:

Отправлено 11 Июнь 2010 - 12:01

а теперь в Windows просит drweb32.flg. Где брать?

Он не нужен.
С уважением,
Борис А. Чертенко aka Borka.

#104 DoC

DoC

    Добрый Э-э-х

  • Posters
  • 1 477 Сообщений:

Отправлено 11 Июнь 2010 - 12:05

где-так :(
у меня работает без сбоев уже долгое время. ограничения - нужно наличие валидного ключа. читаем внимательно комментарии в тексте, правим нужные места для себя.
адреса областей обновлений для конкретной версии нужно брать из update.drl
вешаем в cron по расписанию.
!!!обязательно собрать строку запроса - 60 позиция и ниже!!!

#!/usr/bin/perl

# (c) 2004-2010 year by Ruslan G. Smirnoff
# ver.20100322.1230

use String::CRC32;
# взять модуль CRC32 можно
# http://search.cpan.org/CPAN/authors/id/S/SO/SOENKE/String-CRC32-1.4.tar.gz
# или по поиску в гугле или на cpan.org

use IO::Socket;

my $errors;

BEGIN {
$SIG{__DIE__} = sub {
my $text = shift;
print "ERROR: $text\n";
exit(0);
};
}

sub dec2hex {my $decnum = $_[0];
my $hexnum="";
my $tempval="";
while ($decnum != 0) {$tempval = $decnum % 16;
if ($tempval > 9) {$tempval = chr($tempval + 55);}
$hexnum = $tempval . $hexnum;
$decnum = int($decnum / 16);
if &#40;$decnum < 16&#41; {if &#40;$decnum > 9&#41; {$decnum = chr&#40;$decnum + 55&#41;;}
$hexnum = $decnum . $hexnum; $decnum = 0}}
return $hexnum;
}
# перевод DEC -> HEX

sub GetFileD
{
# Получение файла по HTTP
 my $name;
 $name=$_&#91;0&#93;;
$document=$fold.$name;
$/ = undef;
$iop = IO&#58;&#58;Socket&#58;&#58;INET->new&#40;Timeout=>20, Proto => &#34;tcp&#34;, PeerAddr => $host&#91;$idd&#93;, PeerPort => $port&#41; or $errors=&#34;1&#34;;

if &#40;$! eq &#34;Invalid argument&#34;&#41; {$errors=&#34;1&#34;;return&#40;&#34;&#34;&#41;}
# еще один бубен

unless &#40;$iop&#41; 
 {
  $errors=&#34;1&#34;;
  return&#40;&#34;&#34;&#41;;
 }

$errors=&#34;0&#34;;

$iop->autoflush&#40;1&#41;;
$/ = undef;
# 2 бубенчика

$iop->print &#40;&#34;GET $document HTTP/1.0\nAccept&#58; */*\nUser-Agent&#58; DrWebUpdate-6.00.0.03030 &#40;windows&#58; 5.01.2600&#41;\nProxy-Connection&#58; Keep-Alive\n
X-DrWeb-Validate&#58; 00000000000000000000000000000000\n
X-DrWeb-KeyNumber&#58; 0000000000\n
Pragma&#58; no-cache\nHost&#58; $host&#91;$idd&#93;\n\n&#34;&#41; or $errors=&#34;1&#34;;
### 4 строки выше собрать в одну, заменив параметры X-DrWeb-Validate и
### X-DrWeb-KeyNumber которые можно получить из штатной утилиты обновления,
### запустив ее вот так
### &#34;C&#58;\Program Files\DrWeb\DrWebUpW.exe&#34; /GO /RP!UpdateLog.txt /dbg /dbg /dbg
### и найти данные параметры в файле !UpdateLog.txt
### если строки не собрать - скрипт работать НЕ БУДЕТ! ошибок кстати не выдаст &#58;-&#41;

 $a = <$iop>;
 close $iop;
 if &#40;$a&#41; {if &#40;$a eq &#34;&#34;&#41; {$errors=&#34;1&#34;;$a=&#34;Error!\n\n&#34;}} else {$errors=&#34;1&#34;;$a=&#34;!Error!\n\n&#34;}
 
 &#40;$head,$body&#41; = split /\r?\n\r?\n/,$a,2;
 $head=&#34;&#34;;
 if &#40;$body&#41; {if &#40;$body eq &#34;&#34;&#41; {$errors=&#34;1&#34;;$body=&#34;&#34;}} else {$errors=&#34;1&#34;;$body=&#34;&#34;}
 return&#40;$body&#41;;
}

@disabled=&#40;&#34;timestamp&#34;,&#34;update.drl&#34;&#41;;

&#40;$sec,$min,$hour,$mday,$mon,$year,$sec,$sec,$sec&#41;=localtime;
$sec++;
$mon++;
$year=$year+&#34;1900&#34;;
if &#40;$mday<&#34;10&#34;&#41; {$mday=&#34;0&#34;.$mday}
if &#40;$mon<&#34;10&#34;&#41; {$mon=&#34;0&#34;.$mon}
if &#40;$hour<&#34;10&#34;&#41; {$hour=&#34;0&#34;.$hour}
if &#40;$min<&#34;10&#34;&#41; {$min=&#34;0&#34;.$min}
$nowtime=&#34;$mday/$mon/$year $hour&#58;$min&#34;;
$namesds=&#34;$mday-$hour-$min&#34;;
# тут получаем локальное время, дату и формируем переменные для времени

$host&#91;1&#93;= &#39;update.msk.drweb.com&#39;;
$host&#91;2&#93;= &#39;update.msk3.drweb.com&#39;;
$host&#91;3&#93;= &#39;update.drweb.com&#39;;
$host&#91;4&#93;= &#39;update.fr1.drweb.com&#39;;
$host&#91;5&#93;= &#39;update.msk5.drweb.com&#39;;
$host&#91;6&#93;= &#39;update.msk6.drweb.com&#39;;
$host&#91;7&#93;= &#39;update.msk7.drweb.com&#39;;
$host&#91;8&#93;= &#39;update.us.drweb.com&#39;;
# Адреса серверов обновления

$idd=&#34;1&#34;;
# Не менять!

$maxidd=&#34;8&#34;;
# Максимально серверов в списке

$port  = &#39;80&#39;;
# удаленный порт

#$fold  = &#39;/500/sspace/windows/&#39;;
$fold  = &#39;/x86/600/sspace/windows/&#39;;
# папка на серверах, откуда берутся обновления - с начальным и конечным слешами

$paths=&#34;/var/basef6ss/&#34;;
# локальный путь к базам

$paths1=&#34;/var/base/&#34;;
# локальный путь к файлу drweb32.lst

$logff=&#34;/var/drwebf6ss.log&#34;;
#$logff=&#34;/dev/tty&#34;;
# лог-файл. или укажите для вывода на экран в качестве имени /dev/tty

open &#40;LogF,&#34;>>$logff&#34;&#41; or die &#34;$nowtime&#58; can not append log file $logff&#34;;
# открыть лог

$name  = &#34;drweb32.lst&#34;;
# не менять!

#$nameA = &#34;drweb32.lst&#34;;
$nameA = &#34;drweb32f6ss._lst&#34;;
# имя файла drweb32.lst - для выборочной раздачи может меняться

$nameorg=$paths1.$nameA.&#34;_org&#34;;
# имя оригинального файла, принятого с сервера &#40;оригинальная копия&#41;

$errors=&#39;0&#39;;$idd=&#34;1&#34;;$okkey=&#34;0&#34;;while &#40;&#40;$okkey < &#34;1&#34;&#41;&&&#40;$idd <= $maxidd&#41;&#41;
{ $body=GetFileD&#40;&#39;drweb32.lst&#39;&#41;;
 if &#40;$errors ne &#34;1&#34;&#41; {$errors=&#34;0&#34;;$okkey=&#34;1&#34;;} else {$idd++;$errors=&#34;0&#34;}
}
if &#40;$errors eq &#39;1&#39;&#41; {print LogF &#34;$nowtime&#58; LST  Can not connect to http demon on $host&#91;$idd&#93;=$idd at port $port&#58; $!\n&#34;;exit;}

$error=&#34;0&#34;;open &#40;Forg,&#34;>$nameorg&#34;&#41; or $error=&#34;1&#34;;if &#40;$error eq &#34;1&#34;&#41; {print LogF &#34;$nowtime&#58; can not write file $nameorg&#34;;$error=&#34;0&#34;}
print Forg $body;
close &#40;Forg&#41;;


$names=$paths.$name;	#lst
$namesd=$paths1.$nameA;	#не менять!
$namesds=$paths1.&#34;old/&#34;.$nameA.$namesds;
$body=~ s/\x0A/|/g;
$body=~ s/\x0D//g;
@data=split&#40;/\|/,$body&#41;;
$namess=$names.&#34;-&#34;;	#не менять!
$errorcrc=&#34;0&#34;;
#print @data;

$error=&#34;0&#34;;open &#40;F,&#34;>$namess&#34;&#41; or $error=&#34;1&#34;;
if &#40;$error eq &#34;1&#34;&#41; {print LogF &#34;$nowtime&#58; Can not write file $namess&#34;;$error=&#34;0&#34;}
for &#40;$iz=0; $iz<=$#data; $iz++&#41; 
{$datas=$data&#91;$iz&#93;;
$loc = rindex&#40;$datas, &#34;<&#34;&#41;;if &#40;$loc >0&#41; {$datas =~ s/>/\\/g;$datas =~ s/</\\/g;}
$loc = rindex&#40;$datas, chr&#40;92&#41;&#41;;
if &#40;$loc>0&#41; {$datas=substr&#40;$datas,0,1&#41;.substr&#40;$datas,$loc+1,length&#40;$datas&#41;&#41;}

#if &#40;index&#40;$datas,&#39;&#91;&#39;&#41; < 1&#41; {
if &#40;&#40;substr&#40;$datas,0,1&#41; ne &#34;&#91;&#34;&#41;&&&#40;index&#40;$datas,&#34;timestamp&#34;&#41; < 1&#41;&#41; {
@ob=split&#40;/\,/,$datas&#41;;$ob&#91;0&#93;=substr&#40;$ob&#91;0&#93;,1,length&#40;$ob&#91;0&#93;&#41;&#41;;$names=$paths.$ob&#91;0&#93;;$error=&#34;0&#34;;$crc=&#34;0&#34;;
 if &#40;substr&#40;$datas,0,1&#41; eq &#34;-&#34;&#41; {foreach $filename &#40;glob&#40;$names&#41;&#41; {unlink&#40;&#34;$filename&#34;&#41;;}}
   # удалить файл с -
 else
   {$dw=&#34;dws&#34;.chr&#40;92&#41;;
   if &#40;index&#40;$datas,$dw,0&#41; >0&#41; {$ob&#91;0&#93;=&#34;dws&#34;.chr&#40;92&#41;.$ob&#91;0&#93;;}
   open &#40;F1,&#34;<$names&#34;&#41; or $error=&#34;1&#34;;
	if &#40;$error eq &#34;0&#34;&#41; {$crc = crc32&#40;*F1&#41;; # для внутренней функции
	 }
 close&#40;F1&#41;;$obs=substr&#40;$ob&#91;1&#93;,1,length&#40;$ob&#91;1&#93;&#41;&#41;;$obs=~ tr/A-Zю-ъ/a-zЮ-Ъ/;
$crcs=dec2hex&#40;$crc&#41;;
#print &#34;&#58;$crcs&#58;$obs&#58;$ob&#91;1&#93;&#58;$ob&#91;2&#93;\n&#34;;
 
 $obs=hex &#40;$obs&#41;;$crcold=$crc;
if &#40;$crc ne $obs&#41; {$error=&#34;1&#34;;}
if &#40;$error eq &#34;1&#34;&#41; # начать загрузку файла - не совпадает CRC32
 {$errors=&#39;0&#39;;$idd=&#34;1&#34;;$okkey=&#34;0&#34;;

while &#40;&#40;$okkey < &#34;1&#34;&#41;&&&#40;$idd <= $maxidd&#41;&#41;
{ 
$ffile=&#34;&#34;;
$ffile=GetFileD&#40;$ob&#91;0&#93;&#41;;if &#40;$ffile eq &#34;&#34;&#41; {$errors=&#34;1&#34;}
#print $ob&#91;0&#93;.&#34;&#58;&#34;.$ffile.&#34;\n&#34;;
if &#40;$errors ne &#34;1&#34;&#41; {$errors=&#34;0&#34;;$okkey=&#34;1&#34;;print LogF &#34;$nowtime&#58; $ob&#91;0&#93;&#58; &#34;;} else {$idd++;}
}

if &#40;$errors eq &#34;1&#34;&#41; {print LogF &#34;$nowtime&#58; $ob&#91;0&#93; Can not connect to http demon on $host&#91;$idd&#93;=$idd at port $port&#58; $!\n&#34;;
# если файл кривой - обнуляем
#print $ob&#91;0&#93;.&#34;\n&#34;;
$errors=&#34;0&#34;;$okkey=&#34;1&#34;;$ffile=&#34;&#34;;
#exit;
}

$namesu=$names.&#34;~new&#34;;
	  $error=&#34;0&#34;;open &#40;F1,&#34;>$namesu&#34;&#41; or $error=&#34;1&#34;;if &#40;$error eq &#34;1&#34;&#41; {print LogF &#34;$nowtime&#58; Can not create file $namesu&#34;;$error=&#34;0&#34;} # error
	  print F1 $ffile;close&#40;F1&#41;;print LogF &#34;From&#58; $idd\n&#34;;
$crc1=&#34;0&#34;;$error=&#34;0&#34;;open &#40;F1,&#34;<$namesu&#34;&#41; or $error=&#34;1&#34;;if &#40;$error eq &#34;0&#34;&#41; {$crc1 = crc32&#40;*F1&#41;;close&#40;F1&#41;;}
if &#40;$crc1&#41; {} else {$crc1=&#34;0&#34;}
if &#40;&#40;$crc1 eq $obs&#41;||&#40;$crc1 eq &#34;0&#34;&#41;&#41; { unlink&#40;$names&#41;;rename&#40;$namesu,$names&#41;;
 open &#40;F1,&#34;<$names&#34;&#41; or $error=&#34;1&#34;;
 if &#40;$error eq &#34;0&#34;&#41; {$crc2 = crc32&#40;*F1&#41;;close&#40;F1&#41;;
  if &#40;$crc2 ne $crc1&#41; {print LogF &#34;$nowtime&#58; CRC&#58; dataflush $ob&#91;0&#93;=$crc2; list=$obs; crc1=$crc1\n&#34;;
 $data&#91;$iz&#93;=&#34;&#34;;}
  }
 }
else { # error CRC in new file
 $obzzz=dec2hex&#40;$crcold&#41;;
# $data&#91;$iz&#93;=&#34;$ob&#91;0&#93;, $obzzz&#34;;
 $data&#91;$iz&#93;=&#34;&#34;;
 $acrc1=dec2hex&#40;$crc1&#41;;
 $acrc2=dec2hex&#40;$obs&#41;;
 print LogF &#34;$nowtime&#58; CRC&#58; erasenew $ob&#91;0&#93;=$acrc1; list=$acrc2; Write&#58; $obzzz\n&#34;;
 unlink&#40;$namesu&#41;;
 $errorcrc=&#34;1&#34;;
 }
}
}
# end of VDB
}
 if &#40;&#40;$data&#91;$iz&#93; ne &#34;&#34;&#41;&&&#40;index&#40;$data&#91;$iz&#93;,&#34;update.drl&#34;&#41; eq -1&#41;
 &&&#40;index&#40;$data&#91;$iz&#93;,&#34;timestamp&#34;&#41; eq -1&#41;
 &#41; {print F &#34;$data&#91;$iz&#93;\n&#34;;}
}

close &#40;F&#41;;

&#40;$d,$d,$d,$d,$d,$d,$d,$size,$d,$d,$d,$d,$d&#41; = stat&#40;$namess&#41;;$d=&#34;&#34;;

if &#40;$size ne &#34;0&#34;&#41;
# если бубен сработал - не обновлять LST
{
 $crc1=&#34;0&#34;;$crc2=&#34;0&#34;;
 open &#40;F1,&#34;<$namesd&#34;&#41; or $error=&#34;1&#34;;if &#40;$error eq &#34;0&#34;&#41; {$crc1 = crc32&#40;*F1&#41;;close&#40;F1&#41;;}
 open &#40;F1,&#34;<$namess&#34;&#41; or $error=&#34;1&#34;;if &#40;$error eq &#34;0&#34;&#41; {$crc2 = crc32&#40;*F1&#41;;close&#40;F1&#41;;}

# if &#40;$crc1 ne $crc2&#41;
# если новый и старый LST файлы разные
  {
#   $error=&#34;0&#34;;rename &#40;$namesd,$namesds&#41; or $error=&#34;1&#34;;if &#40;$error eq &#34;1&#34;&#41; {print LogF &#34;error rename old file&#34;}
   $error=&#34;0&#34;;rename &#40;$namess,$namesd&#41; or $error=&#34;1&#34;;if &#40;$error eq &#34;1&#34;&#41; {print LogF &#34;error rename new file&#34;}
  }
# else {unlink&#40;$namess&#41;;}
 
}

#chmod 384,$namesd;
close &#40;LogF&#41;;

P.S. согласен, скрипт кривоват, но работает в принципе нормально. в случа сбоев автоматом переключается на следующие зеркала.
недостаток - drweb32.lst все же получает с первого доступного - могут быть разногласия, но переделывать лень.

Чукча не читатель! Чукча - писатель!


#105 oldzren

oldzren

    Newbie

  • Posters
  • 10 Сообщений:

Отправлено 15 Июнь 2010 - 07:52

!!!обязательно собрать строку запроса - 60 позиция и ниже!!!

Объясните, пожалуйста, это должно выглядеть так:
$iop->print &#40;&#34;GET $document HTTP/1.0\nAccept&#58; */*\nUser-Agent&#58; DrWebUpdate-6.00.0.03030 &#40;windows&#58; 5.01.2600&#41;\nProxy-Connection&#58; Keep-Alive\n X-DrWeb-Validate&#58; &#34;md5_ключа&#34;\n X-DrWeb-KeyNumber&#58; &#34;номер_ключа&#34;\n Pragma&#58; no-cache\nHost&#58; $host&#91;$idd&#93;\n\n&#34;&#41; or $errors=&#34;1&#34;;
то есть в одну строку все через пробелы?

#106 pig

pig

    Бредогенератор

  • Helpers
  • 10 855 Сообщений:

Отправлено 15 Июнь 2010 - 08:26

Да.
Почтовый сервер Eserv тоже работает с Dr.Web

#107 DoC

DoC

    Добрый Э-э-х

  • Posters
  • 1 477 Сообщений:

Отправлено 15 Июнь 2010 - 11:53

!!!обязательно собрать строку запроса - 60 позиция и ниже!!!

Объясните, пожалуйста, это должно выглядеть так:
$iop->print &#40;&#34;GET $document HTTP/1.0\nAccept&#58; */*\nUser-Agent&#58; DrWebUpdate-6.00.0.03030 &#40;windows&#58; 5.01.2600&#41;\nProxy-Connection&#58; Keep-Alive\n X-DrWeb-Validate&#58; &#34;md5_ключа&#34;\n X-DrWeb-KeyNumber&#58; &#34;номер_ключа&#34;\n Pragma&#58; no-cache\nHost&#58; $host&#91;$idd&#93;\n\n&#34;&#41; or $errors=&#34;1&#34;;
то есть в одну строку все через пробелы?


в одну строку без пробелов.
напомню, что ключ должен быть ЛЕГАЛЬНЫМ, как получить значения X-DrWeb-Validate и X-DrWeb-KeyNumber указано в коментах.

Чукча не читатель! Чукча - писатель!


#108 Faer

Faer

    Newbie

  • Members
  • 2 Сообщений:

Отправлено 18 Июнь 2010 - 08:44

Подскажите пожалуйста с чем может быть связанно.

Key Number of User /home/drweb/drweb32.key = ******
download http://update.drweb.com/500/windows/timestamp, 675D8EB2
451 Access denied (file http://update.drweb.com/500/windows/timestamp)

А без него сами понимаете не что обновляться не будет.

#109 Axel

Axel

    Member

  • Posters
  • 215 Сообщений:

Отправлено 18 Июнь 2010 - 08:53

Подскажите пожалуйста с чем может быть связанно.

Key Number of User /home/drweb/drweb32.key = ******
download http://update.drweb.com/500/windows/timestamp, 675D8EB2
451 Access denied (file http://update.drweb.com/500/windows/timestamp)

А без него сами понимаете не что обновляться не будет.



Прочитайте топик с этого поста: Сообщение #93

#110 Faer

Faer

    Newbie

  • Members
  • 2 Сообщений:

Отправлено 18 Июнь 2010 - 09:23

Да весь форум облазил и прочитал уже, но задача остаётся всё та же. Не даёт скачать timestamp!

Просьба выложите сюда работоспособный скрипт полностью. Буду очень благодарен.

#111 DoC

DoC

    Добрый Э-э-х

  • Posters
  • 1 477 Сообщений:

Отправлено 18 Июнь 2010 - 10:01

Да весь форум облазил и прочитал уже, но задача остаётся всё та же. Не даёт скачать timestamp!

Просьба выложите сюда работоспособный скрипт полностью. Буду очень благодарен.


мой скрипт ПОЛНОСТЬЮ работоспособный при наличии валидного ключа (для получения значений) и настроек переменных (коментарии в коде)

Чукча не читатель! Чукча - писатель!


#112 Axel

Axel

    Member

  • Posters
  • 215 Сообщений:

Отправлено 22 Июнь 2010 - 19:57

Подскажите пожалуйста с чем может быть связанно.

Key Number of User /home/drweb/drweb32.key = ******
download http://update.drweb.com/500/windows/timestamp, 675D8EB2
451 Access denied (file http://update.drweb.com/500/windows/timestamp)

А без него сами понимаете не что обновляться не будет.



У меня складывается ощущение, что дело в ключе.
Воспроизвел Вашу ошибку на старом ключевом key-файле.

После этого взял валидный бета-ключ

Запустил мой скрипт с такими настройками:

#!/usr/bin/perl -w
use Digest&#58;&#58;MD5;
use LWP&#58;&#58;UserAgent;
use Compress&#58;&#58;Zlib;
use strict;
my $basedir  = &#39;/tmp/update/500&#39;; # папка, откуда обновляются виндовые агенты
my $drwebkey = &#39;drweb32_x86-beta.key&#39;; # путь к ключу drweb
my $url	  = &#39;http&#58;//update.drweb.com/x86/600/sspace/windows&#39;; # одна из зон обновления Dr.Web

файл timestamp скачивается успешно

MD5 of key-file drweb32_x86-beta.key = b3669f1f64d18cf546cf18b8925bf32c
Key Number of User drweb32_x86-beta.key = 0013138323
download http://update.drweb.com/x86/600/sspace/windows/timestamp, 78CFF5EE
skip http://update.drweb.com/x86/600/sspace/windows/update.drl, 584F1D6 CRC match
download http://update.drweb.com/x86/600/sspace/windows/drwebupw.exe, B7DD6C6F
....


В подтверждение видим, что он действительно лежит в папке

axel@axel:/tmp/update/500$ ls -la
итого 4900
drwxr-xr-x 2 axel axel 4096 2010-06-22 20:49 .
drwxr-xr-x 3 axel axel 4096 2010-06-22 20:35 ..
-rw-r--r-- 1 axel axel 4160512 2010-06-22 20:40 drweb32.dll
-rw-r--r-- 1 axel axel 5037 2010-06-22 20:49 drweb32.lst
-rw-r--r-- 1 axel axel 823296 2010-06-22 20:47 drwebupw.exe
-rw-r--r-- 1 axel axel 10 2010-06-22 20:49 timestamp
-rw-r--r-- 1 axel axel 507 2010-06-22 20:46 update.drl

axel@axel:/tmp/update/500$ cat timestamp
1277224163


DoC,

мне кажется, Ваш скрипт будет работать до первого изменения lst-файла со стороны DR.Web, как это было ранее

Изменил скрипт на wiki: изменения

#113 DoC

DoC

    Добрый Э-э-х

  • Posters
  • 1 477 Сообщений:

Отправлено 23 Июнь 2010 - 10:23

DoC,

мне кажется, Ваш скрипт будет работать до первого изменения lst-файла со стороны DR.Web, как это было ранее

Изменил скрипт на wiki: изменения


мой скрипт работает уже несколько лет. пока не жалуюсь.
выложил сюда для страждущих - может кому понадобится.
он конечно не шедевр творчества, т.к. писался в далекие годы и потом дорабатывался "напильником", но работает в принципе стабильно и без особых глюков.
надо бы переписать с нуля, но лень и катастрофическая нехватка свободного времени...

Чукча не читатель! Чукча - писатель!


#114 oldzren

oldzren

    Newbie

  • Posters
  • 10 Сообщений:

Отправлено 29 Август 2011 - 04:39

Заметил интересную особенность: если скрипт запускать cron-ом, он только скачивает новые файлы, измененные игнорирует. Если же его запустить вручную - скачивает и измененные. Права на папку 777. Интересно, с чем может быть связано?

#115 DoC

DoC

    Добрый Э-э-х

  • Posters
  • 1 477 Сообщений:

Отправлено 03 Сентябрь 2011 - 11:59

Заметил интересную особенность: если скрипт запускать cron-ом, он только скачивает новые файлы, измененные игнорирует. Если же его запустить вручную - скачивает и измененные. Права на папку 777. Интересно, с чем может быть связано?


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

Чукча не читатель! Чукча - писатель!


#116 oldzren

oldzren

    Newbie

  • Posters
  • 10 Сообщений:

Отправлено 05 Сентябрь 2011 - 07:59

DoC, тут не так просто. Владелец был root, cron запускался тоже от root-a - новые файлы скрипт скачивал, обновленные - нет. При "ручном" запуске от root-a скрипт скачивал все файлы. Поменял владельца и группу на простого пользователя, в cron-e задание тоже изменил от этого же пользователя - результат один в один: скачивает только новые файлы, обновленные пропускает. При "ручном" запуске от этого же пользователя скачивает все, и новые, и обновленные.

#117 DoC

DoC

    Добрый Э-э-х

  • Posters
  • 1 477 Сообщений:

Отправлено 05 Сентябрь 2011 - 08:24

DoC, тут не так просто. Владелец был root, cron запускался тоже от root-a - новые файлы скрипт скачивал, обновленные - нет. При "ручном" запуске от root-a скрипт скачивал все файлы. Поменял владельца и группу на простого пользователя, в cron-e задание тоже изменил от этого же пользователя - результат один в один: скачивает только новые файлы, обновленные пропускает. При "ручном" запуске от этого же пользователя скачивает все, и новые, и обновленные.


смотрите что у вас не так с кроном. скорее всего неверно написан запуск.
должно быть типа так (запуск каждые 20 минут программы /var/www/drweb )
*/20 * * * * root /var/www/drweb

Чукча не читатель! Чукча - писатель!


#118 oldzren

oldzren

    Newbie

  • Posters
  • 10 Сообщений:

Отправлено 05 Сентябрь 2011 - 10:11

У меня так:
#crontab -u user -l
>15,45 * * * * /var/update/update.pl
Папка /var/update/600, скрипт лежит в /var/update. Cron скрипт запускает:
#ls -l /var/update/600 | sort +5 -6
>...
-rwxrwxrwx 1  user  user 2760832 2011-09-05 08&#58;26 vrcpp.dll
-rwxrwxrwx 1  user  user   23418 2011-09-05 11&#58;45 drwtoday.vdb
-rwxrwxrwx 1  user  user   53785 2011-09-05 11&#58;45 dwrtoday.vdb
-rwxrwxrwx 1  user  user   36856 2011-09-05 11&#58;46 dwntoday.vdb
-rwxrwxrwx 1  user  user 1683028 2011-09-05 11&#58;51 dwfmlw00.dws
-rwxrwxrwx 1  user  user   17090 2011-09-05 11&#58;51 white_dwfmlw.dws
-rwxrwxrwx 1  user  user	  10 2011-09-05 13&#58;15 timestamp
-rwxrwxrwx 1  user  user	7233 2011-09-05 13&#58;45 drweb32.lst
В последней строчке видно, что файл drweb32.lst обновлен. А вот после "ручного" запуска скрипта получаем вот что:
#/var/update/update.pl
#ls -l /var/update/600 | sort +5 -6
>...
-rwxrwxrwx 1  user  user   17090 2011-09-05 11&#58;51 white_dwfmlw.dws
-rw-r--r-- 1  user  user  533825 2011-09-05 14&#58;06 drw50093.vdb
-rw-r--r-- 1  user  user   53785 2011-09-05 14&#58;06 dwr50012.vdb
-rwxrwxrwx 1  user  user	  10 2011-09-05 14&#58;06 timestamp
-rwxrwxrwx 1  user  user	1370 2011-09-05 14&#58;06 drwdaily.vdb
-rwxrwxrwx 1  user  user	1550 2011-09-05 14&#58;06 dwrtoday.vdb
-rwxrwxrwx 1  user  user   35850 2011-09-05 14&#58;06 drwtoday.vdb
-rwxrwxrwx 1  user  user   37273 2011-09-05 14&#58;06 dwntoday.vdb
-rwxrwxrwx 1  user  user	7233 2011-09-05 14&#58;06 drweb32.lst
То есть скачались два новых файла и обновились остальные. И у новых файлов атрибуты 755, у остальных же 777. В логах cron-a вот что:
#cat /var/log/cron.log
>Sep  5 13&#58;45&#58;01 hostname CRON&#91;20417&#93;&#58; &#40;user&#41; CMD &#40;/var/update/update.pl&#41;
Получается, задание все-таки запускалось...

Сообщение было изменено oldzren: 05 Сентябрь 2011 - 10:15


#119 oldzren

oldzren

    Newbie

  • Posters
  • 10 Сообщений:

Отправлено 05 Сентябрь 2011 - 10:25

Прошу прощения, в предыдущем посте опечатался. У новых файлов атрибуты 644, а не 755.

#120 DoC

DoC

    Добрый Э-э-х

  • Posters
  • 1 477 Сообщений:

Отправлено 05 Сентябрь 2011 - 10:28

У меня так:

#crontab -u user -l
>15,45 * * * * /var/update/update.pl

Получается, задание все-таки запускалось...


вы посмотрели пример записи в кронтабе?
сравнили со своей?
убедились что у вас НЕВЕРНАЯ и еще после этого что-то пытаетесь доказать? :)
где логика???

а задание будет запущено без вопросов.

как вариант - сделайте атрибуты на все файлы rw-rw-rw-

Чукча не читатель! Чукча - писатель!



Читают тему: 0

0 пользователей, 0 гостей, 0 скрытых