Страница 1 из 1

perl & trafd

Добавлено: 2009-08-05 12:53:11
sancho
В оопщем имееться скрипт на perl.

Код: Выделить всё

#!/usr/bin/perl
use mysql;

$dbh=mysql->Connect("","db","login","pass");
$del_query="delete from hourly;";
$dbh->Query($del_query);

$plain_path='/usr/local/var/traffic_plain/';
$lasthour=`date '+%Y%m%d%H'`;
chomp($lasthour);
#$full_path=$plain_path.$lasthour.".ng";


Process($plain_path.$lasthour.".rl0");
Process($plain_path.$lasthour.".sk0");
Process($plain_path.$lasthour.".ng0");
Process($plain_path.$lasthour.".ng1");
Process($plain_path.$lasthour.".ng2");
Process($plain_path.$lasthour.".ng3");
Process($plain_path.$lasthour.".ng4");
Process($plain_path.$lasthour.".ng5");
Process($plain_path.$lasthour.".ng6");
Process($plain_path.$lasthour.".ng7");
#Process($plain_path."20070703.sk1");


sub Process {

my $fn = shift;
open(F,$fn) || die "Can't open traffic plain file ".$fn;
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 hourly (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);

}	
При запуске скрипт выдает ошибку:

Код: Выделить всё

# ./db_step1.pl
Can't locate object method "Connect" via package "mysql" (perhaps you forgot to load "mysql"?) at ./db_step1.pl line 4.
Установил пакет p5-DBD-mysql с портов. Непомогло.
Помогите плиз

Re: perl & trafd

Добавлено: 2009-08-05 13:21:56
ProFTP
а кто его писал?

четко написано: Can't locate object method "Connect" via package "mysql"

попробуй поставить сonnect

Re: perl & trafd

Добавлено: 2009-08-05 14:52:49
sancho
ProFTP писал(а):а кто его писал?

четко написано: Can't locate object method "Connect" via package "mysql"

попробуй поставить сonnect
писал мой друг, пробовал я и так писать... непомогло.. тоже самое пишет.

Re: perl & trafd

Добавлено: 2009-08-05 14:59:00
ProFTP
есди друг писал, он его проверял? или в слепую писал?

замени use mysql; на use DBI;

Re: perl & trafd

Добавлено: 2009-08-05 15:06:24
sancho
ProFTP писал(а):есди друг писал, он его проверял? или в слепую писал?

замени use mysql; на use DBI;
Да этот скрипт отработал больше 2 лет. Патом систему переустановить пришлось. Точнее все заново пришлось переустановить.