Salut à tous !
J'ai besoin d'un coup de main ... je suis en galère sur un script en Perl, alors que je ne programme pas du tout dans ce langage (je "dev" en AutoIt, c'est dire ).
Code :
- #!/usr/bin/env perl
- use warnings;
- use strict;
- use Sys::Hostname;
- use POSIX;
- #print strftime("MAG_%Y%M%d_nbcli_%H00.%a", localtime());
- #Prefix CodeSoc f1 f2 f3 ...
- my $hmin=0;
- my $hmax=2400;
- my $pivot=0;
- while(1) {
- if($ARGV[0] eq "-hmin" || $ARGV[0] eq "hmin" ) {
- shift;
- $hmin=$ARGV[0];
- } elsif($ARGV[0] eq "-hmax" || $ARGV[0] eq "hmax" ) {
- shift;
- $hmax=$ARGV[0];
- } elsif($ARGV[0] eq "-pivot" || $ARGV[0] eq "pivot" ) {
- shift;
- $pivot=$ARGV[0];
- } else {
- last;
- }
- shift;
- }
- if($#ARGV<2) {
- print "$0 Prefix CodeSoc F1 [F2 [F3 ... ]]\n";
- exit(3);
- }
- my $magnum="999";
- my $name=hostname();
- #$name="SRVSC0150";
- if ($name =~ /^POS([0-9]{3})([0-9]{3})/ ) {
- $magnum=$1;
- } elsif ($name =~ /^SRVSC[0-9]([0-9]{3})/) {
- $magnum=$1;
- }
- my $prefix=$ARGV[0];
- my $codesoc="$ARGV[1]";
- my $msg="Prefix: $prefix, codesoc=$codesoc, ";
- my $res=0;
- my $now=time();
- my @today=localtime($now);
- my @fileday;
- if($today[2]*100+$today[1]<$pivot) {
- @fileday=localtime($now-3600*24);
- } else {
- @fileday=@today;
- }
- if(!(($today[2]*100+$today[1])>=$hmin && ($today[2]*100+$today[1])<$hmax)) {
- print "En dehors des heures d'export ($hmin-$hmax)\n";
- exit(0);
- }
- for(my $f=2; $f<=$#ARGV; $f++) {
- my $fn=$ARGV[$f];
- $fn =~ s/%cs/$codesoc/g;
- $fn =~ s/%mg/$magnum/g;
- $fn=strftime($fn, @fileday);
- $msg=$msg.$fn." ";
- $fn=~ s/\.Mon/.Lun/g;
- $fn=~ s/\.Tue/.Mar/g;
- $fn=~ s/\.Wed/.Mer/g;
- $fn=~ s/\.Thu/.Jeu/g;
- $fn=~ s/\.Fri/.Ven/g;
- $fn=~ s/\.Sat/.Sam/g;
- $fn=~ s/\.Sun/.Dim/g;
- if(-f $prefix."/".$fn) {
- $msg.="OK.";
- } else {
- $msg.="KO";
- $res=2;
- }
- $msg.=" ";
- $fn=~ s/\.Lun/.Mon/g;
- $fn=~ s/\.Mar/.Tue/g;
- $fn=~ s/\.Mer/.Wed/g;
- $fn=~ s/\.Jeu/.Thu/g;
- $fn=~ s/\.Ven/.Fri/g;
- $fn=~ s/\.Sam/.Sat/g;
- $fn=~ s/\.Dim/.Sun/g;
- }
- print $msg."\n";
- exit($res);
|
Mon problème est le suivant : ce script (destiné à fonctionner dans Nagios) est censé détecter la présence de fichiers ayant une extension .lun, .mar, .mer, etc. , fichier qui doit être généré côté client suivant le jour de la semaine.
Le truc, c'est que le script fait une contrôle sur des .mon, .sun, .wed, etc. car Nagios est hébergé sur une Debian localisée en anglais. Il va de soi que je n'ai pas les droits pour changer la localisation (ce serait trop facile).
Donc le coup de main dont j'ai besoin, ce serait d'avoir avant le contrôle du nom du fichier une petite table de correspondance qui modifie la valeur de la variable de telle façon que l'extension soit dans la bonne langue ...
Merci d'avance !
Edit : voilà qui est implémenté ! Merci gilou
Message édité par ghost line le 07-03-2017 à 16:16:59