+ -
当前位置:首页 → 问答吧 → 如何提取数组前后的变化元素?

如何提取数组前后的变化元素?

时间:2010-09-13

来源:互联网

last命令出的东西全导入一个@last数组,以此提取访问该服务器的IP和时间点
如何做到每次遍历@last数组,都只将新增的行提取出来?

作者: 下后下前拳   发布时间: 2010-09-13

回复 下后下前拳


    这是小弟用的代码,最后插库。。现在不知道如何每次都取出新的行插进去。
use strict;
use DBI;
my @last=`last`;
my @split;
my $host;
my @eth0;
my $ip;
my $access_time;
my $left_time;
my $date;
my $sth;
my $dbh;
my $sql;
my $db;

open(ETH0,"/etc/sysconfig/network-scripts/ifcfg-eth0");

while(<ETH0>){
        if ($_=~/IPADDR/){
        @eth0=split("=",$_);
        $host=$eth0[1];
        }
}


close ETH0;


foreach(@last){
if($_=~/^root/){
@split=split(" ",$_);
$ip=$split[2];
$access_time=$split[6];
$left_time=$split[8];
$date=$split[4]." ".$split[5];
$db="DBI:mysql:syslog:192.168.31.23;user=root;password=";
$sql="insert into ip_access(host,access_ip,access_time,left_time,date) values('$host','$ip','$access_time','$left_time','$date')";
$dbh=DBI->connect($db);
$sth=$dbh->prepare($sql) or die "can't use sql statement" . DBI->errstr;
$sth->execute();
}
}

$sth->finish();
$dbh->disconnect();
print "insert data over.\n";

作者: 下后下前拳   发布时间: 2010-09-13

不知道有没有了解错~~~新增行··一般放在后面吧?记录前一次数组下标~~~下次比较~·

作者: wfnh   发布时间: 2010-09-13