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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
#!/usr/bin/perl
use warnings;
use strict;
use Text::CSV_XS;
use Data::Dumper;
use IO::Handle;
use POSIX qw(strftime);
use Time::Local;
my $secondes_par_jour = 60 * 60 * 24;
my $datei = strftime "%Y-%m-%d", localtime(time() - $secondes_par_jour);
my $date = strftime "%Y-%m-%d", localtime;
my $fic_out = "out.csv";
open my $OUT, ">", $fic_out or die "ouverture impossible de $fic_out $!";
use feature 'say';
my $file = 'input.csv';
open(my $fh, '<', $file) or die "Could not open '$file' $!\n";
my ($start, $end, $srv, $proc);
my %h;
for (<$fh>) {
chomp;
($start, $end, $srv, $proc) = split ';';
if ($start le $datei){
$start = "$datei 00:00";
}
if ($start eq $end){
# quand $start egale a $end ==> ajouter une minute a $end
}
if ($end eq "-- :"){
$end = "$datei 23:59";
}
$h{$srv}{$proc} = [] unless exists $h{$srv}{$proc};
push $h{$srv}{$proc}, [$start, $end];
}
close($fh);
my $day = (split ' ', $start)[0];
my $dt;
for (my $m = 0; $m < 1440; $m += 5) {
$dt = sprintf "%s %02d:%02d", $datei, $m/60, $m%60;
#$dt = sprintf "%s %02d:%02d", $date, $m/60, $m%60;
for $srv (sort keys %h) {
for $proc (sort keys $h{$srv}) {
$OUT join ';', ($dt, $srv, $proc, is_running($dt, $h{$srv}{$proc}));
}
}
}
sub is_running {
my ($dt, $spns) = @_;
for my $span (@$spns) {
return 1 if ($dt ge $span->[0] and $dt le $span->[1]);
}
return 0;
} |