делаю учет трафика по статьям
http://citrin.ru/my/ng_ipacct.html http://www.bsdportal.ru/kb.php?mode=article&k=53
есть таблица в mysql
CREATE TABLE inet (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
src_ip CHAR(15) NOT NULL,
src_port SMALLINT NOT NULL,
dst_ip CHAR(16) NOT NULL,
dst_port SMALLINT NOT NULL,
proto CHAR(4) NOT NULL,
size INT NOT NULL,
packets INT NOT NULL,
fdd TINYINT NOT NULL,
fdm TINYINT NOT NULL,
fdy SMALLINT NOT NULL,
ftime TIME NOT NULL,
PRIMARY KEY (id, src_ip, dst_ip)
);
и есть данный скрипт на perl:
#!/usr/bin/perl
use IO::File;
use Time::localtime;
use DBI;
$du = "root";
$dp = "pass";
$dn = "ipacctd";
$dh = "localhost";
$file = "/var/log/ipacct/2005-06-08/2005-06-08-16-xl1";
$dbh = DBI->connect("dbi:mysql:$dn:$dh",$du,$dp);
if($DBI::err) {print($DBI::errstr);exit;}
$add = $dbh->prepare("INSERT INTO inet VALUES (?,?,?,?,?,?,?,?,?,?,?,?);");
open(IN, "cat $file |");
while()
{
chomp();
( $src_ip, $src_port, $dst_ip, $dst_port, $proto, $packets, $size, $localtime ) = split/s+/;
$date2 = localtime($localtime);
$day = $date2->mday;
$month = $date2->mon+1;
$year = $date2->year+1900;
$hour = $date2->hour;
$min = $date2->min;
$sec = $date2->sec;
$time = "$hour:$min:$sec";
$add->execute( NULL, $src_ip, $src_port, $dst_ip, $dst_port, $proto, $packets, $size, $day, $month, $year, $time );
}
$dbh->disconnect();
exit;
так вот, логи пишутся замечательно. А этот скрипт не хочет в mysql засовывать данные ругается:
DBD::mysql::st execute failed: Column 'src_ip' cannot be null at ipacct.pl line 35.
подскажите плиз в чем проблема, или покажите рабочий пример такого скрипта.
уже второй день бьюсь :(((