#! /usr/bin/perl use strict; use warnings; use FindBin qw ($Bin); use Net::Ping; use CGI; use CGI::Carp qw(warningsToBrowser fatalsToBrowser); use Time::HiRes; use Time::Piece; our $date = Time::Piece->new->strftime('%Y-%d-%m_%H-%M-%S'); #Aktuelles Datum open (STDERR, '>/home/deruytja/webserver/rifucgi/logs/'.$date.'multiping_error.log'); #Redirecting Standart Error to file my $cgi = new CGI; my $dateiname = $cgi->param('dateiname'); my ($data, $file, $out_file, $wfname, $wfile, $i, $dur,$age, $key, $typ, $val, $p1, $p2, $p3, $ip, $out, $anzahl, $start, $ende, @label, @dauer, %devices, @check); our (@graphdata); if (!length($dateiname) == 0) { $out_file = ("$dateiname\_$date.csv") or die 'Error processing file: ',$!; } else { $out_file = ("ping_$date.csv") or die 'Error processing file: ',$!; } my $ping1 = Net::Ping->new("tcp", 1); my $ping2 = Net::Ping->new("tcp", 1); my $ping3 = Net::Ping->new("tcp", 1); $ping1->port_number("80"); $ping2->port_number("5432"); $ping3->port_number("301"); $ping1->hires(); $ping2->hires(); $ping3->hires(); my $outpath = '/home/deruytja/webserver/output/multiping/'; open ($out, '>', $outpath.$out_file) or die 'Error processing file: ',$!; $out->autoflush(1); &UPLOAD; open (INPUT,"ping($devices{$_}); $typ='SIAE'; if (!$p1 == 1) { ($p2, $dur, $ip) = $ping2->ping($devices{$_}); $typ='Huawei'; if (!$p2 == 1) { ($p3, $dur, $ip) = $ping3->ping($devices{$_}); $typ='Siemens'; } if (!$p3 == 1){$typ='Unknown'} } if ($p1 == 1 or $p2 == 1 or $p3 == 1) { $dur = sprintf("%.2f", 1000 * $dur); push (@label,$_); #LinkID ins erste Array push (@dauer,$dur); #duration ins 2te Array $check[$i] = 'ACTIVE;'.$_.';'.$typ.';'.$devices{$_}.';'.$dur.'ms'."\n"; } else { push (@label,$_); #LinkID ins erste Array push (@dauer,'0'); #duration ins 2te Array $check[$i] = 'OFFLINE;'.$_.';'.$typ.';'.$devices{$_}."\n"; }; $ping1->close(); $ping2->close(); $ping3->close(); $i++; } $ende = Time::HiRes::time(); push @check, 'Ausführdauer: '.sprintf("%.2f",($ende-$start)).'s'; print $out 'Ping_result;Link_ID;Device_Type;IP;Ping_time'."\n"; foreach (@check) { print $out "$_"; }; close $out; @graphdata = ([@label],[@dauer]); ########################OUTPUT print $cgi->header, $cgi->start_html('Pingergebnis'), $cgi->h1('Ergebnis des Pings'), $cgi->br(); print "
##
#! /usr/bin/perl
#use strict;
use warnings;
use GD::Graph::bars;
require "multiping.pl";
our (@graphdata, $date);
my ($mygraph,$graphimage);
open (STDERR, '>/home/deruytja/webserver/rifucgi/logs/'.$date.'multipinggraph_error.log'); #Redirecting Standart Error to file
$mygraph = GD::Graph::bars->new(500, 300);
$mygraph->set(
x_label => 'Link',
y_label => 'Antwortzeit',
title => 'Antwortzeiten der Links',
) or warn $mygraph->error;
$graphimage = $mygraph->plot(\@graphdata);
print "Content-type: image/png\n\n";
binmode STDOUT;
print $graphimage->png;