>>В каком месте это лучше
>>сделать и каким способом? Заранее благодарю.
>
>имхо, на этапе "скрипт на перле" выбрасывать или в другую таблицу пихать
>
Ок. А как?
#!/usr/bin/perl
use Mysql;
$plain_path='/usr/local/var/traffic_plain/';
$yesterday=`date -v-1d '+%Y%m%d'`;
chomp($yesterday);
$full_path=$plain_path.$yesterday.".rl0";
$dbh = Mysql->Connect("localhost","ipacc");
$del_query="delete from yesterday;";
$dbh->Query($del_query);
open(F,$full_path) || die "Can't open traffic plain file";
while ($str=<F>)
{
chomp($str);
$fi=substr($str,0,1);
if (($fi>='1') && ($fi<='9'))
{
@a=split('\s+',$str);
# @a[0] - src_ip
# @a[1] - src_port
# @a[2] - dst_ip
# @a[3] - dst_port
# @a[4] - proto
# @a[6] - size of packets
if (@a[1] eq 'client') {
$src_port=65535;
} else {
if (@a[1] eq 'none') {
$src_port=0;
} else {
$src_port=@a[1];
}
}
if (@a[3] eq 'client') {
$dst_port=65535;
} else {
if (@a[3] eq 'none') {
$dst_port=0;
} else {
$dst_port=@a[3];
}
}
$proto=0;
if (@a[4] eq 'icmp') {
$proto=1; }
if (@a[4] eq 'tcp') {
$proto=6; }
if (@a[4] eq 'udp') {
$proto=17; }
$ins_query="insert into yesterday (src_ip, src_port, dst_ip, dst_port, proto, bytes) values ('".@a[0]."',".$src_port.",'".@a[2]."',".$dst_port.",".$proto.",".$a[6].");";
$dbh->Query($ins_query);
};
};
close(F);