moin,
ich versuche gerade einen grafischen output überverzeichnisgrößen zu erstellen. das auslesen der verzeichnisgrößen funktioniert und nun wollte ich das vorhandene skript um den punkt der grafischen ausgabe erweitern (punkt im skript => #Graphische Ausgabe) - bisher leider ohne erfolg.
vielleicht könnt ihr mir ja einen hinweis geben, da ich nicht mehr weiter komme.
danke für eure hilfe!
#------------------------------------------------------
Script zur Ermittlung der Größen von Verzeichnisen
-----------------------------------------------------
#------------------------------------------------------
use File::Find;
use File::Copy;
use Sys::Hostname;
use Net::SMTP;
use GD::Graph::bars;
********************************************************
Variablen / Definitionen
********************************************************
my ($a,$b) = $str =~ /(.*).*)/; # wird zum Wert extrahieren benötigt
my $count=-1; # Zaehlvariable
my $rootdir = $ARGV[0]; # Verzeichnis welches durchsucht werden soll
my $output_file = „C:\Batch\FS_SIZE\sst_output.log“; # Angabe des OutputFile nebst Verzeichnis, wo das Log hingeschrieben wird
my $trigger_file = „C:\Batch\FS_SIZE\Trigger\sst_output.log“; # Angabe des TriggerFiles nebst Verzeichnis, damit Alert ausgelöst wird
my $local_host = hostname(); # automatische Ermittlung des Hostnamens auf dem das Script Läuft
my $graph = GD::Graph::bars->new(400, 300);
********************************************************
Einlesen des Input-Files - in Array
********************************************************
@Zeilen = ("");
open(INPUT, „C:\Batch\FS_SIZE\SST_Input_File.txt“) || die „Datei mit Infos nicht gefunden\n“;
while()
{
push(@SSTINPUT,$_);
}
close(INPUT);
my $max=$#SSTINPUT; # Bestimmung Anzahl der Zeilen im Array
********************************************************
Ende Globale Variablen I/II / Definitionen
********************************************************
START
prüfen, ob Argumente vollständig
if ( ($#ARGV) $max){
$count = -1;
}
}
while ($file ne $split1 && $count > $max); #UND Bedingung
Print in file
open(HANDLE, „>>$output_file“);
printf HANDLE „%-10s“,datum_str();
#WERT OK, Schwellwert ueberschritten oder KEIN Schwellwert gesetzt
printf HANDLE „%-10s“,$leveltxt;
#WERT des Schwellwertes
printf HANDLE „%-10s“,$level;
printf HANDLE „%-40s“,$file_path ;
printf HANDLE " %8.2f", (dir_size($file_path)/1024/1024);
printf HANDLE " MB \n";
close (HANDLE);
#Graphische Ausgabe
#my @data = ( @data_dir, @data_space);
$graph->set(
x_label => ‚Verzeichnisse‘,
y_label => ‚Größe in MByte‘,
title => ‚Übersicht der Verzeichnisgrößen‘,
y_max_value => 20000,
y_tick_number => 20000,
y_label_skip => 2000
) or die $graph->error;
open(IMG, ‚>c:\batch\FS_Size\file.png‘) or die $!;
binmode IMG;
}
}
}
}
closedir DIR;
#*****************************************************************
Funktion zur Ermittlung der Größe eines Verzeichnisses in Bytes
#*****************************************************************
sub dir_size {
my $directory = shift;
die „Directory expected as parameter“ if !-d $directory;
my $size_total = 0;
find({follow => 0, wanted => sub {
$size_total += -s $File::Find::name || 0;
}}, $directory);
return $size_total;
}
#***********************************************************
#* Funktion Rückgabe aktueller Zeitstempel in der Form
#* 20110416
#***********************************************************
sub datum_str{
lokale Zeit holen
my @zeit = localtime(time());
Datums und Zeitwerte sprechenden variablen zuweisen
my $Sec=$zeit[0];
my $Min=$zeit[1];
my $Stun=$zeit[2];
my $Tag=$zeit[3];
if ($Tag