Код: Выделить всё
#!/usr/bin/perl -w
use Switch;
use Time::Local;
########Setings#######################
$work_dir="/usr/local/www/data/kav";
######################################
scalar(localtime(time())) =~ /^(\w{3})\s\w{3}\s\d{2}\s(\d{2}):(\d{2}):\d{2}\s\d{4}$/is;
$cur_day_week=$1;
$cur_chas=$2;
$cur_min=$3;
switch($cur_day_week){
case 'Mon' { $data1=(17*60+$cur_chas*60+$cur_min); $data2=($data1+7*24*60); }
case 'Tue' { $data1=(17*60+1*24*60+$cur_chas*60+$cur_min); $data2=($data1+7*24*60); }
case 'Wed' { $data1=(17*60+2*24*60+$cur_chas*60+$cur_min); $data2=($data1+7*24*60); }
case 'Thu' { $data1=(17*60+3*24*60+$cur_chas*60+$cur_min); $data2=($data1+7*24*60); }
case 'Fri' { $data1=(17*60+4*24*60+$cur_chas*60+$cur_min); $data2=($data1+7*24*60); }
case 'Sat' { $data1=(17*60+5*24*60+$cur_chas*60+$cur_min); $data2=($data1+7*24*60); }
case 'Sun' { $data0=($cur_chas*60+$cur_min);
if ($data0 <= 5*60)
{
$data1=(17*60+6*24*60+$cur_chas*60+$cur_min);
$data2=($data1+7*24*60);
}
if ($data0 > 5*60 && $data0 <= 7*60)
{
print "в текущее время обновления не обслуживаются\n";
exit;
}
if ($data0 > 7*60)
{
$data1=($cur_chas*60+$cur_min-7*60);
$data2=($data1+7*24*60);
}
}
else { exit; }
}
$test_file=$work_dir."/test.txt";
open(FIL1,"> $test_file") or die "установите права на запись в директорию ".$work_dir."\n";
print FIL1 "test";
close(FIL1);
open (FIL2, "avp7.log") or die
"ошибка открытия файла avp7.log \nсоздайте файл avp7.log в текущей директории \nи установите права на запись\n";
$stroka = <FIL2>;
close (FIL2);
if ($stroka =~ /^(\d{10})$/is)
{
$update_time=$1;
$update_time_min=(time()-$update_time)/60;
if ($update_time_min <= $data1)
{
print scalar(localtime(time()))." Start download day updates\n";
system("cd /tmp; \
rm /tmp/av-i386-daily.zip; \
wget http://downloads.kaspersky-labs.com/zip ... daily.zip; \
unzip -o /tmp/av-i386-daily.zip -d $work_dir/; \
chmod 0644 $work_dir/*;");
print scalar(localtime(time()))." Finish download day updates\n";
}
if (($update_time_min > $data1) && ($update_time_min <= $data2))
{
print scalar(localtime(time()))." Start download weekly and day updates\n";
system("cd /tmp; \
rm /tmp/av-i386-weekly.zip; \
wget http://downloads.kaspersky-labs.com/zip ... eekly.zip; \
unzip -o /tmp/av-i386-weekly.zip -d $work_dir/; \
rm /tmp/av-i386-daily.zip; \
wget http://downloads.kaspersky-labs.com/zip ... daily.zip; \
unzip -o /tmp/av-i386-daily.zip -d $work_dir/; \
chmod 0644 $work_dir/*;");
print "обновляем время в логе\n";
open(FIL2,"> avp7.log") or die
"ошибка открытия файла avp7.log \nсоздайте файл avp7.log в текущей директории \nи установите права на запись\n";
print FIL2 time();
close(FIL2);
print scalar(localtime(time()))." Finish download weekly and day updates\n";
}
if ($update_time_min > $data2)
{
print scalar(localtime(time()))."Start download full and day updates\n";
system(" \
#rm -R $work_dir/*; \
cd /tmp; \
rm /tmp/av-i386-cumul.zip; \
wget http://downloads.kaspersky-labs.com/zip ... cumul.zip; \
unzip -o /tmp/av-i386-cumul.zip -d $work_dir/; \
rm /tmp/av-i386-daily.zip; \
wget http://downloads.kaspersky-labs.com/zip ... daily.zip; \
unzip -o /tmp/av-i386-daily.zip -d $work_dir/; \
chmod 0644 $work_dir/*;");
print "обновляем время в логе\n";
open(FIL2,"> avp7.log") or die
"ошибка открытия файла avp7.log \nсоздайте файл avp7.log в текущей директории \nи установите права на запись\n";
print FIL2 time();
close(FIL2);
print scalar(localtime(time()))." Finish download full and day updates\n";
}
}
else
{
print scalar(localtime(time()))."Start download full and day updates\n";
system(" \
#rm -R $work_dir/*; \
cd /tmp; \
rm /tmp/av-i386-cumul.zip; \
wget http://downloads.kaspersky-labs.com/zip ... cumul.zip; \
unzip -o /tmp/av-i386-cumul.zip -d $work_dir/; \
rm /tmp/av-i386-daily.zip; \
wget http://downloads.kaspersky-labs.com/zip ... daily.zip; \
unzip -o /tmp/av-i386-daily.zip -d $work_dir/; \
chmod 0644 $work_dir/*;");
print "обновляем время в логе\n";
open(FIL2,"> avp7.log") or die
"ошибка открытия файла avp7.log \nсоздайте файл avp7.log в текущей директории \nи установите права на запись\n";
print FIL2 time();
close(FIL2);
print scalar(localtime(time()))." Finish download full and day updates\n";
}
второй скрипт написан на шелле
Код: Выделить всё
#!/bin/sh
dir='/var/www/kav/'
server='http://dnl-ru2.kaspersky-labs.com/'
components="BLST AHI386 AH AHX64 ADB,AP AVS EMUI386 INFO KAS300 AS,PAS,ASTRM PCDB RM,BB,BB2 RT,RTAK7 Updater WAI386 WM KAV2006EXEC KAV6WSEE KAV_AQARS KAV_ASUS KAV_AVLS KAV_BRK,KIS_BRK KAV_DEL KAV_DT KAV_GIGB KAV_INB KAV_IOMART KAV_KNSS,KIS_KNSS,WKS_KNSS KAV_KPSS KAV_MAIS,KIS_MAIS KAV_NEO KAV_PCSS,KIS_PCSS KAV_PSTV KAV_RSS KAV_STG,KIS_STG KAV_VSNL,KIS_VSNL KAV_WHIZ KAV_XSS"
xml="/usr/bin/xmlstarlet"
wget="/usr/bin/wget"
subdir='index/6'
mkdir -p ${dir}${subdir}
cd ${dir}${subdir}
wget ${server}${subdir}/u0607g.xml
grep -v "^;" u0607g.xml > u0607g.xml.temp
for component in $components
do
stt=${xml}" sel -t -m "//FileDescription[@ComponentID=\'${component}\']" -v @ServerFolder -n u0607g.xml.temp"
path2=`${stt}`
mkdir -p ${path2}
stt=${xml}" sel -t -m "//FileDescription[@ComponentID=\'${component}\']" -v @Filename -n u0607g.xml.temp"
fname=`${stt}`
cd ${path2}
wget ${server}${subdir}/${path2}/${fname}
grep -v "^;" ${fname} > ${fname}.temp
stt=${xml}" sel -t -m "//FileDescription[@ComponentID=\'${component}\']" -v @Filename -n "${fname}.temp
files=`${stt}`
for file in $files
do
stt=${xml}" sel -t -m "//FileDescription[@Filename=\'${file}\']" -v @ServerFolder -n "${fname}.temp
sfolders=`${stt}`
if [ "${sfolders}" != "" ]
then
sfolders=`echo ${sfolders} | tr '\' '/'`
for sfolder in ${sfolders}
do
mkdir -p ${sfolder}
if [ -s ${sfolder}/${file} ]
then
size=`ls -l ${sfolder}/${file} | awk '{print $5}'`
stt=${xml}" sel -t -m "//FileDescription[@Filename=\'${file}\']" -v @FileSize -n "${fname}.temp
sizeneed=`${stt}`
if [ "${size}" != "${sizeneed}" ]
then
${wget} --no-verbose --no-proxy --directory-prefix="${sfolder}" --timestamp ${server}${subdir}/${path2}/${sfolder}/${file}
fi
else
${wget} --no-verbose --no-proxy --directory-prefix="${sfolder}" --timestamp ${server}${subdir}/${path2}/${sfolder}/${file}
fi
done
else
if [ -s ${file} ]
then
size=`ls -l ${file} | awk '{print $5}'`
stt=${xml}" sel -t -m "//FileDescription[@Filename=\'${file}\']" -v @FileSize -n "${fname}.temp
sizeneed=`${stt}`
if [ "${size}" != "${sizeneed}" ]
then
${wget} --no-verbose --no-proxy --timestamp ${server}${subdir}/${path2}/${file}
fi
else
${wget} --no-verbose --no-proxy --timestamp ${server}${subdir}/${path2}/${file}
fi
fi
done
rm ${fname}.temp
cd ${dir}${subdir}
done
rm u0607g.xml.temp
пути под линух написаны,поправьте для себя под фришку