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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| my $nomProgramme="maintenance";
#---------------------------------------------------------------------------------
use strict; #permet des scripts plus propres
use warnings; #permet des scripts plus propres
use lib "c:/perl/lib";use lib "c:/perl/site/lib";
use Spreadsheet::ParseExcel;
my $repertoire = 'd:/scriptsPerl';
my $recensementAppareil =
Spreadsheet::ParseExcel::Workbook->Parse('recensementAppareil.xls');
executerTaches();
#======================================================
sub datation{
# retourne une date au format français
my ($time) = @_;
$time=time unless $time;
my @n = localtime($time);
my $datation = sprintf("%02d/%02d/%04d %02d:%02d:%02d",$n[3],$n[4]+1,$n[5]+1900,$n[2],$n[1],$n[0]);
return ($time,$datation);
}#======================================================
#======================================================
sub ecritLog {
#ecrit heure: message
my ($message,$epoch) = @_;
$epoch=time unless $epoch;
my $datation = datation($epoch);
print "$datation : $message\n";
return;
}#======================================================
#======================================================
sub ecritFich{
#ecrit dans le ficher $nom.txt le message
my ($nom,$message)=@_;
$recensementAppareil="$repertoire\\$recensementAppareil";
$nom="$repertoire\\$nom.txt";
my $log = "$nom.txt";
open(LOG,">>$log");
print LOG "$message\n";
close(LOG);
}#======================================================
sub executerCommandeSysteme{
my ($commande,$option)=@_; # le tableau des arguments passes a la fonction
if($option){
print "\n-->executer la commande systeme $commande, option: $option<--\n";
system ("$commande $option");
}else{
print "\n-->executer la commande systeme $commande, sans option<--\n";
system ("$commande");
}
}#======================================================
sub fauxEnvoiMail{ # ecrit dans un fichier au lieu d'envoyer un mail... Mais bon pour le début ça devrais vous suffire
my ($de,$pour,$sujet,$corp)=@_;
my $message = 'attention, Une maintenance doit etre realisee aujourdhui' ;
$message="mail de : $de \n pour : $pour \n sujet : $sujet \n Corp du message: \n $corp";
ecritFich($sujet,$message);
}#======================================================
sub lireTableauExel{
# --------------------------------------Declaration des variables locales------------------------
my $valeur; # valeur dans la case du tableau exel
my $col; # Colone dans le tableau excel
my $entete; # entete du fichier excel
my $row; # ligne
my $excel; # Objet permettant de traiter des fichier excel
my $sheet; # feuille exel
my $message;
#------------------------------------------------------------------
#ouvre le fichier excel du serveur et parcourt la liste des packages
$recensementAppareil = "$repertoire\\recensementAppareil.xls";
open my $recensementAppareil, '<', $recensementAppareil;
$sheet=$excel->{Worksheet}[0]; #selection la 1ere feuille
if(!$sheet){
ecritLog("impossible de lire le fichier $recensementAppareil");
}else{
foreach $row ($sheet->{MinRow}+1 .. $sheet->{MaxRow}) { #on saute la 1ere ligne
foreach $col ($sheet->{MinCol} .. $sheet->{MaxCol}){
$entete=$sheet->{Cells}[0][$col]->{Val}; # recupere nom de l'entete dans la premiere ligne
$valeur=$sheet->{Cells}[$row][$col]->{Val};# recupere la valeur dans la case $row $col
$message=$message." $entete: $valeur, "
}#foreach
ecritLog("$message");
}#foreach
}
}
#======================================================
sub executerTaches{
ecritLog("executerTaches");
lireTableauExel();
executerCommandeSysteme("echo Fin du prog");
ecritFich("mesageFin","tout c'est bien deroule...");
fauxEnvoiMail("scriptMaintenance\@spea.meteo.fr","spea\@meteo.fr","executionScript OK"," le script s'est correctement execute... Bye!!");
}#====================================================== |
Partager