> ДА если это возможно - было бы супер Скрипт вносит данные из access.log squid в БД mysql.
Перед запуском скрипта необходимо:
1. создать БД в mysql. В БД должна быть таблица access c столбцами time, duration, ip, result, bytes, request, url, login, domen, hierarchy, type
2. срипт и все файлы отрабатывают в папке /usr/squid2mysql/ - в случае запуска из другой папки необходимо изменить пути в скрипте.
3. создать файл access.csv
4. скопировать access.log в access.tmp.
#!/usr/local/bin/perl
# соединение с БД
use Mysql;
$host = 'имя_сервера_с_БД';
$database = 'имя_БД';
$user = 'имя_пользователя';
$password = 'пароль_пользователя';
$dbh = Mysql->Connect($host,$database,$user,$password);
# обработка логфайла и внесение данных в БД
# access.tmp - копия access.log, как вариант после squid -k rotate
open(ACCESS,"/usr/squid2mysql/access.tmp");
while (<ACCESS>)
{
chop;
@a = split ' ';
$_=$a[0];
if ($_=@a[6])
{
# убираем некоректные символы из запрашиваемого линка перед внесением в БД
s/\\/_slash_/g;
s/\"/_quote_/g;
s/\'/_apos_/g;
s/\`/_rapos_/g;
@a[6]=$_;
# выделение доменов из запрашиваемой пользователем ссылки (потом можем парсить интересы пользователей сравнивая с БД из редиректора rejik)
s/(h).*?(\/\/)//;
s/(h).*?(\/\/)//;
s/www.//;
s/(\/).*?($)//;
s/(:).*?($)//;
@a[10]=$_;
}
# формируем csv файл для загрузки в БД (200Mb у меня вносится в БД в течении 5 секунд)
open(CSV,">>/usr/squid2mysql/access.csv");
if (@a[0]!='')
{
print CSV "@a[0];@a[1];@a[2];@a[3];@a[4];@a[5];@a[6];@a[7];@a[10];@a[8];@a[9];\n";
}
close (CVS);
}
# внесение информации в БД из сформированного файла
$sql = "LOAD DATA INFILE '/usr/squid2mysql/access.csv' INTO TABLE access FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'";
$dbh->Query($sql);
#$dbh = Mysql->disconnect();
close (ACCESS);
exit;
Если интересно - могу добавить скрипт внесения в БД url из БД rejik.
Заранее приношу простить за допущенные ошибки недоработки т.к. я все еще работаю над данным скриптом.