1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #!/usr/bin/perl -w
use strict;
use DBI;
use CGI;
use POSIX;
my $cgi = new CGI;
my ($dateHeure,$adIp,$numGeneric,$numSpecific,$sysTime,$trap);
my ($date,$heure);
my ($annee,$mois,$jour);
my ($hour,$min,$sec);
my $timestamp;
open FICHIER,"< /var/log/snmptrapfmt.log"
or die "Le fichier snmptrapfmt n'existe pas ! : $!\n";
#Connection à la base de données mysql NomDeBase
my $db = DBI -> connect (("dbi:mysql:dbname=NomDeBase;host=localhost;","root","******"))
or die "connection impossible!";
while ($ligne = <FICHIER>){
# récupération des éléments
($dateHeure,$adIp,$numGeneric,$numSpecific,$sysTime,$trap) = split /;/,$ligne;
#formatage de l'heure
($date,$heure) = split /./,$dateHeure;
($annee,$mois,$jour) = $date =~ m{(\d{4})(\d{2})(\d{2})};
$date = $annee."-".$mois."-".$jour;
($hour,$min,$sec) = $heure =~ m{(\d{4})(\d{2})(\d{2})};
$heure = $hour.":".$min.":".$sec;
$dateHeure = $date." ".$heure;
$timestamp = mktime($sec,$min,$hour,$jour,$mois,$annee );
#formatage du timeticks
$sysTime = $timestamp - $sysTime;
$sysTime = UnixDate(ParseDate("epoch $sysTime"), '%Y-%m-%d %H:%M:%S');
# et on insere dans la base
$db->do("insert into NomTable values ('$dateHeure', '$adIp', '$numGeneric', '$numSpecific', '$sysTime', '$trap')");
or die "pb de requete : $DBI::errstr";
}# fin de traitement de fichier
close FICHIER; |
Partager