0
이 로그 파일에서 소스 IP 및 대상 포트를 가져 와서 Perl을 사용하여 만든 데이터베이스 테이블에 추가해야하는이 할당이 있습니다. dbi sqlite. 나는 그것을하는 스크립트를 작성하려고했지만 작동하지 않는 것 같습니다. 나는 어떤 도움을 주셔서 감사합니다. 로그 파일은 에서 사용할 수 있습니다. http://fleming0.flemingc.on.ca/~chbaker/COMP234-Perl/sample.log로그 파일에서 정보를 얻고 Perl DBI sqlite를 사용하여 데이터베이스 테이블에 추가하는 방법
여기에 제가 가지고있는 코드가 있습니다.
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my %ip2port;
my $IPCount = keys %ip2port;
my $portCount = 0;
my $filename = "./sample.log";
open my $LOG, "<", $filename or die "Can't open $filename: $!";
LINE: while (my $line = <$LOG>) {
my ($src_id) = $line =~ m!SRC=([.\d]+)!gis; my ($dst_port) = $line =~ m!DPT=([.\d]+)!gis;
my $dbh = DBI->connect(
"dbi:SQLite:dbname=test.db",
"",
"",
{ RaiseError => 1 },
) or die $DBI::errstr;
$dbh->do("INSERT INTO probes VALUES($src_id, $dst_port)");
$dbh->do("INSERT INTO probes VALUES(2,'$dst_port',57127)");
my $sth = $dbh->prepare("SELECT SQLITE_VERSION()");
$sth->execute();
my $ver = $sth->fetch();
print @$ver;
print "\n";
$sth->finish();
$dbh->disconnect();
}
작동하지 않는 기능은 무엇입니까? 문제를 진단하기 위해 당신은 무엇을 했습니까? – friedo
do 문이 작동하지 않습니다. 날씨를 확인하는 데 도움이 필요합니다. 올바른 상태의 스크립트가 있거나 오류가 있습니다. – user218001
아, 오류가 있습니다. 그러나 나는 여전히 당신이 의미하는 바가 "일하지 마라"는 것을 알고 싶다. – friedo