#!/usr/bin/perl

$GRAPH_COLOR="x8888ff";
$PLOT_TITLE ="Remote Host";

#  Get path name of gnuplot executable from environment
$GNUPLOT= defined $ENV{GNUPLOT} ? $ENV{GNUPLOT} : "gnuplot";
$GNUDATE= defined $ENV{GNUDATE} ? $ENV{GNUDATE} : "date";

die "Need arguments\n" unless @ARGV>=3;

($LOG_NAME, $PLOT_NAME, $DATE, $YMAX) = @ARGV;

#
#  Make Plot
#
&MakePlot;



#
#  Plot previous week  values from log usin Gnuplot
#
sub MakePlot
	{
	#  Determine min and max date/time (use 1 week interval)
	($LastDate, undef) = 
		($DATE=~ /(\d{4}-\d\d-\d\d)-(\d\d:\d\d)/);
	$MaxDateTime = `$GNUDATE -d "$LastDate + 1 day" "+%Y-%m-%d-%H:%M"`;
	$MinDateTime = `$GNUDATE -d "$LastDate 13 day ago" "+%Y-%m-%d-%H:%M"`;
	$UpdateDateTime = `$GNUDATE "+%Y-%m-%d %H:%M %Z"`;
	chomp $MinDateTime;
	chomp $MaxDateTime;
	chomp $UpdateDateTime;

	#  Number of seconds in day (needed for Gnuplot 'set xtics'
	$Sec = 60*60*24;

	open (GNUPLOT, "| $GNUPLOT") || die "Cannot run GNUPLOT\n";

	#  Make GNUPLOT print immediately
	select (GNUPLOT);
	$| = 1;
	$yrange_statement = "set yrange [0:$YMAX]";

print GNUPLOT <<"EOM";
set xdata time
set timefmt "%Y-%m-%d-%H:%M"
set format x "%m-%d"
set key left
set xrange [ \"$MinDateTime\" : \"$MaxDateTime\" ]
$yrange_statement
set xtics  $Sec
set mxtics 1
set grid xtics
set title "$PLOT_TITLE - Probed and Responding (updated $UpdateDateTime)"
set xlabel "Date"
set ylabel "Host Count"
set term gif small size 600,150 xffffff x000000 xdddddd x880000 $GRAPH_COLOR x000000
set output \"$PLOT_NAME\"
plot "$LOG_NAME" u 1:2 t "Probed" w i lt 2,  "$LOG_NAME" u 1:3 t "Responding" w l lt 3 lw 3
quit
EOM

}
