IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

Besoin d'un coup de main (fonction strftime)


Sujet :

Programmation et administration système Perl

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2017
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Besoin d'un coup de main (fonction strftime)
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #!/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." ";
      if(-f $prefix."/".$fn) {
         $msg.="OK."; 
      } else {
        $msg.="KO";
        $res=2;
      }
      $msg.=" ";
    }
    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 !

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 266
    Points : 12 681
    Points
    12 681
    Par défaut
    Bonjour,
    Et pourquoi ne pas modifier que très localement la locale ?

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ LC_TIME=C perl -e 'use POSIX;setlocale(LC_TIME,"fr_FR.UTF-8") ; print strftime("MAG_%Y%M%d_nbcli_%H00.%a", localtime())."\n" ; setlocale(LC_TIME,"") ;print strftime("MAG_%Y%M%d_nbcli_%H00.%a", localtime())."\n"'
    MAG_20170706_nbcli_2200.lun.
    MAG_20170706_nbcli_2200.Mon
    Ici, ne pas tenir compte de LC_TIME=C au début de la ligne, c'est juste que comme je suis déjà en locale française, l'exemple n'aurait pas été probant.
    Ici, l'idée, c'est juste avant le strftime, on change la locale, et on remet celle de l'environnement juste après.
    Cordialement.

Discussions similaires

  1. [XL-2007] Besoin d'un coup de main sur une fonction Sum
    Par ScandAliche dans le forum Excel
    Réponses: 7
    Dernier message: 04/03/2011, 14h57
  2. Besoin d'un coup de main avec fonction "Grep"
    Par Fredo67 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 18/09/2009, 17h55
  3. C++ besoin d'un coup de main
    Par Invité dans le forum C++
    Réponses: 7
    Dernier message: 19/04/2006, 14h28
  4. Problème avec fwrite() : besoin d'un coup de main
    Par yopuke dans le forum Langage
    Réponses: 2
    Dernier message: 16/04/2006, 10h43
  5. besoin d'un coup de main pour une requête ;)
    Par Fabouney dans le forum Requêtes
    Réponses: 3
    Dernier message: 15/11/2005, 00h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo