88 lines
4.4 KiB
Perl
Executable file
88 lines
4.4 KiB
Perl
Executable file
#!/usr/bin/env perl
|
|
use strict;
|
|
#use Regexp::Common;#expressions regulieres; par exemples pour reconnaitre un entier $RE{num}{int} ou un reel $RE{num}{real}
|
|
use File::Basename;
|
|
use English;
|
|
my $NOM_PROG = basename $PROGRAM_NAME;#$NOM_PROG contient le nom de ce script (utile pour afficher le nom du script dans les warning (warn) ou les messages d erreur (die) )
|
|
#pattern d un reel pour les regex (pour eviter d utiliser $RE{num}{real} du package Regexp::Common qui n est pas toujours disponible)
|
|
my $format_reel = '[+-]?[\.]?\d+[\.]?\d*(?:[eE][+-]?\d*)?';
|
|
|
|
|
|
|
|
#affichage de l aide si : le premier argument est -h ou -help ou si le nombre d argument n est pas egal a 2
|
|
if ($ARGV[0] =~ /^-h$/i or $ARGV[0] =~ /^-help$/i or $#ARGV != 1) {
|
|
print "script $NOM_PROG :\n";
|
|
print " USAGE... \n";
|
|
print " Ce script Perl s'utilise avec 2 arguments : \n";
|
|
print " -> 1- Nom du fichier rapport a creer\n";
|
|
print " -> 2- Nom de l executable HZ++\n";
|
|
exit;
|
|
}
|
|
|
|
|
|
|
|
#recuperation des arguments
|
|
my $file = $ARGV[0];#argument 1 : nom du fichier rapport a creer
|
|
my $exeHZ = $ARGV[1];#argument 2 : executable HZ++
|
|
|
|
|
|
|
|
#-------------------------------------------------
|
|
#1) Determination de la date de lancement du test
|
|
#-------------------------------------------------
|
|
my ($sec,$min,$heure,$mjour,$mois,$annee,$sjour,$ajour,$isdst)=localtime();
|
|
$annee = $annee + 1900;
|
|
$mois = $mois + 1;
|
|
$mjour = "0$mjour" if($mjour < 10);#on rajoute un 0 devant si le nombre est inferieur a 10
|
|
$mois = "0$mois" if($mois < 10);#on rajoute un 0 devant si le nombre est inferieur a 10
|
|
|
|
|
|
#-------------------------------------------------
|
|
#2) Determination de la version HZ++
|
|
#-------------------------------------------------
|
|
# Methode : on lance Herezh et on exploite l affichage
|
|
# - la ligne commencant par " version" suivi du numero permet de saisir le numero de version
|
|
# - la ligne "# (version la plus rapide )" permet de reperer si il s agit d une version HZppfast (en l absence de cette ligne, on en deduit qu il s agit d une version HZpp)
|
|
#
|
|
my @redir = qx(echo f | $exeHZ | grep version);#appel system de l executable HZ++ en redirigeant l affichage dans la variable @redir (affichage filtre par grep pour ne garder que les lignes "version")
|
|
system("rm -f ancienNom");#suppression du fichier ancienNom qui est cree par Herezh
|
|
my $no_version = 'non lue';#numero de version
|
|
my $is_fast = 0;#indicateur pour savoir si c est la version HZppfast ou non
|
|
foreach my $line (@redir) {#parcours de chaque ligne de la redirection de l affichage HZ++
|
|
$no_version = $1 if($line =~ /version\s+($format_reel)/);
|
|
$is_fast = 1 if($line =~ /version la plus rapide/);#si la ligne indique "version la plus rapide", alors il s agit de HZppfast
|
|
}
|
|
#construction du label de la version
|
|
my $LABEL_VERSION;
|
|
if($no_version eq 'non lue') {#si le numero de version n a pas pu etre lu => on prepare un message ECHEC pour le rapport (et on affiche un avertissement dans le terminal avec warn)
|
|
$LABEL_VERSION = "ECHEC => impossible de lire la version HZ++ (soit c est une erreur liee a l executable HZ++ ($exeHZ), soit c est une erreur liee au script $NOM_PROG)";
|
|
warn "\n**ATTENTION (prog:$NOM_PROG) : impossible de lire la version HZ++ (soit c est une erreur liee a l executable HZ++ ($exeHZ), soit c est une erreur liee au script $NOM_PROG)\n\n";
|
|
}
|
|
elsif($is_fast) {#si $is_fast est vrai => le label de la version sera : HZppfast $no_version
|
|
$LABEL_VERSION = "HZppfast $no_version";
|
|
}
|
|
else {#sinon => le label de la version sera : HZpp $no_version
|
|
$LABEL_VERSION = "HZpp $no_version";
|
|
}
|
|
|
|
|
|
#-------------------------------------------------
|
|
#3) ecriture de l en-tete du fichier rapport
|
|
# (rq : affichage eventuel du nom de la machine si la variable environnement $HOST existe)
|
|
#-------------------------------------------------
|
|
open (FSOR,">$file");
|
|
print FSOR "---------------------------------------\n";
|
|
print FSOR "- RAPPORT DE TEST -\n";
|
|
print FSOR "---------------------------------------\n";
|
|
print FSOR "- version HZ++ : $LABEL_VERSION\n";
|
|
print FSOR "\n";
|
|
print FSOR "- date : $mjour/$mois/$annee\n";
|
|
print FSOR "- heure : $heure:$min (heure locale)\n";
|
|
if(defined $ENV{'HOST'}) {
|
|
print FSOR "- machine : $ENV{'HOST'}\n";
|
|
}
|
|
else {
|
|
print FSOR "- machine : inconnue (variable environnement \"\$HOST\" non definie)\n";
|
|
}
|
|
print FSOR "---------------------------------------\n\n";
|
|
close (FSOR);
|