Задача:
Реализовать сбор почты с нескольких серверов squid и обработку lightsquid-ом в головном офисе.
Поехали.
Обработчик на филиале,запускается в 00:00 по крону
cat updater.pl
#!/usr/bin/perl
system («bzip2 -fk -9 /usr/local/squid/logs/access.log > /access.log.bz2»);
use Net::FTP;
$ftp = Net::FTP->new(«ftp.mycompanyserver.ru», Timeout => 30, Debug => 0) || die «Can’t connect to ftp server.n»;
$ftp->login(«squid», «passnasquid») || die «Can’t login to ftp server.n»;
$ftp->cwd(«filial1») || die «Path $cfg_remote_path not found on ftp server.n»;
$ftp->binary();
#$ftp->rename(«old»,»new»);
#iz filiala v golovnoy
$ftp->put(«/usr/local/squid/logs/access.log.bz2», «access.log.bz2»);
#Sinhronizacia iz golovnogo ofisa v filial
$ftp->get(«squid.conf», «/usr/local/etc/squid/squid.conf»);
$ftp->get(«blocked.txt», «/usr/local/etc/squid/blocked.txt»);
$ftp->get(«internet_users», «/usr/local/etc/squid/internet_users»);
$ftp->quit();
system(«/usr/local/sbin/squid -k rotate»);
Обработчик головного офиса:
Запускается по крону в 6 утра
# cat traffrotator.sh
#!/bin/sh
day=`date +%d`
month=`date +%m`
year=`date +%Y`
times=`date ‘+%H:%M:%S’`;
echo «=============================================================================================»
echo «START filial1»
chmod 666 /ftp/squid/filial1/*
log=»/ftp/squid/filial1/access.log.bz2″
log_dir_filial1=»/ftp/squid/arch/filial1/${year}/${month}»
log_file_filial1=»${log_dir_filial1}/${day}_${times}_auth.log»
mkdir -p ${log_dir_filial1}
if [ -f ${log} ] ;
then
echo «FIle is EXIST»
echo «UNZIPPED»
bunzip2 ${log}
echo «Start parsing filial1»
perl /var/www/corp/stat/filial1/lightparser.pl
echo «Movie arch file filial1»
mv /ftp/squid/filial1/access.log ${log_file_filial1}
else
echo -e ‘E[31;40m File Not Exist’; tput sgr0
sendEmail -t log@mail.server.ru -s mail.server.ru -u ERROR_SQUID_UPD_filial1 -m ERROR_UPDATE_FILE_NOT_FOUND -xu log@mail.server.ru -xp pass2mailserver -f log@mail.server.ru
fi
echo «END filial1»
echo «=============================================================================================»
echo «=============================================================================================»
echo «START filial2»
chmod 666 /ftp/squid/filial2/*
log=»/ftp/squid/filial2/access.log.bz2″
log_dir_filial2=»/ftp/squid/arch/filial2/${year}/${month}»
log_file_filial2=»${log_dir_filial2}/${day}_${times}_auth.log»
mkdir -p ${log_dir_filial2}
if [ -f ${log} ] ;
then
echo «FIle is EXIST»
echo «UNZIPPED»
bunzip2 ${log}
echo «Start parsing filial2»
perl /var/www/corp/stat/filial2/lightparser.pl
echo «Movie arch file filial2»
mv /ftp/squid/filial2/access.log ${log_file_filial2}
else
echo -e ‘E[31;40m File Not Exist’; tput sgr0
sendEmail -t log@mail.server.ru -s mail.server.ru -u ERROR_SQUID_UPD_filial2 -m ERROR_UPDATE_FILE_NOT_FOUND -xu log@mail.server.ru -xp pass2mailserver -f log@mail.server.ru
fi
echo «END filial2»
echo «=============================================================================================»