package LogfileMonitor; use strict; use warnings; use IO::File; use File::ReadBackwards; use DateTime; use DateTime::Format::DateParse; use LWP::UserAgent; #Don't forget trailing slash. my $filePath = '/var/log/'; my @fileNames = ('gateways.log', 'system.log'); my $slackHandle = my handle my $token = my token # main Function sub LFM(){ my $run = 1; my $test = 0; while($run && $test < 2){ for(my $i = 0; $i <= @fileNames; $i++){ sendMessage($slackHandle, scanFile($filePath,$fileNames[$i])); sleep(300); } $test++; } } # get relevant Lines from Logfile sub scanFile(){ my $currentTime = DateTime->now(time_zone => "local"); my $handle = File::ReadBackwards->new($_[0] . $_[1]); #print $handle; print "\n"; print $_[0].$_[1]; print "\n\n\n"; for(my $i = 0; $i <= 15; $i++) { my $line = $handle->readline; if(defined $line) { my $messageTime = substr($line, 0, 15); my $messageAgent = substr($line, 16, index($line, ':')); my $message = substr($line, index($line, ':', 16)); $messageTime = DateTime::Format::DateParse->parse_datetime($messageTime); my $diff = $currentTime->substract($messageTime); if ($diff->minutes() <= 5){ return $line; } else { return undef; } } } } # push Message to Slack sub sendMessage(){ my $Messages = $_[1]; #my $slackHandle = @_[0]; #my $userAgent = LWP::UserAgent->new(); #my $data = qq{{ "text" : "@_[1]"}}; #my $httpRequest = HTTP::Request->new(POST=>$slackHandle); #$httpRequest->header('content-type' => 'application/json'); #$httpRequest->content($data); #my $response = $userAgent->request($httpRequest); #if ($response->is_success){ # print $response->decoded_content; #} #else #{ # print $response->code; # print $response->message; #} print $Messages; } #Call main Function LFM();