#!/usr/bin/perl -w use strict; use File::Tail; use Cwd qw(); my $path = Cwd::cwd(); my $community = 'public'; my $snmp_bsid = '.1.3.6.1.4.1.2700.1.1.11.0'; my $bsid; my $file = File::Tail->new( name =>'/var/log/messages', interval => 1, maxinterval => 1, resetafter=> 5, ); while (defined(my $line=$file->read)) { print $line,"\n"; if ($line =~ /^(.*) dns02cor dhcpd: DHCPACK on ([0-9\.]+) to ([[:xdigit:]:]+).* ([0-9\.]+)/) { write_register($1,$2,$3); } } sub write_register { my ($date,$client_ip,$client_imsi) = @_; $output=qx(snmpget -v2c -t1 -c $community $client_ip $snmp_bsid 2>&1); my @result=split(/:/,$output); if ($result[3]){ $bsid=$result[3]; $bsid=~s/ //g; $bsid=~s/\n//g; } system 'echo "'.$date.','.$client_ip.','.$client_imsi.','.$bsid.'," >>'.$path.'/register_list.txt'; } 1;