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 :

Shadow expire day


Sujet :

Programmation et administration système Perl

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Points : 137
    Points
    137
    Par défaut Shadow expire day
    bonjour,

    Je suis newbies et pour le fun, j'ai écris ce script pour calculer le nombre de jour entre le premier janvier 1970 et une date pour configurer l'entrée shadowexpire de mon LDAP. Mon soucis est que si j'écris ma date d'expiration en dure dans le script il fonctionne, mais si je veux entrer la date à la main il plante avec le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Usage: Date::Calc::Delta_Days(year1, month1, day1, year2, month2, day2) at ./Daytime.pl line 17, <STDIN> line 1
    Voic mon script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #!/usr/bin/perl
    use warnings;
    use Date::Calc qw(Delta_Days);
    # format date is yyyy, mm, dd
    print "Entrez la date d'expiration du compte ay format yyyy, mm, dd : ";
    @expire_day = <STDIN>;
     
    # @expire_day = (2010, 7, 24);
     
    @born_unix_day = (1970, 1, 1);
    $days = Delta_Days(@born_unix_day, @expire_day);
    print "Shadow expire day is : $days \n";
    exit 0;
    Merci de votre aide

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Si l'utilisateur rentre en console : yyyy, mm, dd
    <STDIN> retournera à ton programme une chaine de caractère que tu dois parser pour obtenir un tableau.

    Voici un code plus propre
    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
    #!/usr/bin/perl
    use warnings;
    use strict;
    use Date::Calc qw(Delta_Days);
     
    # format date is dd/mm/yyyy
    print "Entrez la date d'expiration du compte [au format : dd/mm/yyyy] : ";
    my $date_utilisateur = <STDIN>;
    chomp($date_utilisateur);
     
    my ($expire_jour, $expire_mois, $expire_annee) = split(/\//, $date_utilisateur);
     
    my @born_unix_day = (1970, 1, 1);
    my $days = Delta_Days(@born_unix_day, $expire_annee, $expire_mois, $expire_jour);
    print "Shadow expire day is : $days \n";

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Points : 137
    Points
    137
    Par défaut
    Merci Djibril,

    Mais ton script me donne le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    :~] $ ./Daytime.pl 
    Entrez la date d'expiration du compte [au format : dd/mm/yyyy] : 2010, 7, 24
    Use of uninitialized value in subroutine entry at ./Daytime.pl line 14, <STDIN> line 1.
    Use of uninitialized value in subroutine entry at ./Daytime.pl line 14, <STDIN> line 1.
    Argument "2010, 7, 24" isn't numeric in subroutine entry at ./Daytime.pl line 14, <STDIN> line 1.
    Date::Calc::Delta_Days(): not a valid date at ./Daytime.pl line 14, <STDIN> line 1.

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Lit bien le message d'erreur

    Entrez la date d'expiration du compte [au format : dd/mm/yyyy] : 2010, 7, 24

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Points : 137
    Points
    137
    Par défaut
    Citation Envoyé par djibril Voir le message
    Lit bien le message d'erreur
    Désolé
    il fonctionne très bien, je vais essayer de l'améliorer en faisant un comparaison avec la date du jour .....

    Merci de ton aide

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    Pour mon étude personel, j'ai voulu créer iun script qui calcul le nobre de jours entre 2 dates. J'ai donc modifié le précédent comme suit :
    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
    #!/usr/bin/perl
    # first install libdate-calc-perl package or 
    #go on the CPAN site to install Date::Calc
    use warnings;
    use strict;
    use Date::Calc qw(Delta_Days);
     
    # format date is dd/mm/yyyy
    print "Entrez la premiere date [au format : dd/mm/yyyy] : ";
    my $date1 = <STDIN>;
    chomp($date1);
     
    my ($expire1_jour, $expire1_mois, $expire1_annee) = split(/\//, $date1);
     
    print "Entrez la deuxieme date [au format : dd/mm/yyyy] : ";
    my $date2 = <STDIN>;
    chomp($date2);
     
    my ($expire2_jour, $expire2_mois, $expire2_annee) = split(/\//, $date2);
     
     
     
    my $nbdays = Delta_Days($expire1_annee, $expire1_mois, $expire1_jour, $expire2_jour, $expire2_mois, $expire2_annee);
    print "Shadow expire day is : $nbdays \n";
    Mon soucis c'est les dates à calculer n'ont pas le bon format et j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ ./nbJours.pl 
    Entrez la premiere date [au format : dd/mm/yyyy] : 02/01/2010
    Entrez la deuxieme date [au format : dd/mm/yyyy] : 30/06/2010
    Date::Calc::Delta_Days(): not a valid date at ./nbJours.pl line 23, <STDIN> line 2
    Cela est marrant que ça ne me le faisait pas dans la première version.

    Merci de votre aide.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Points : 137
    Points
    137
    Par défaut
    J'ai trouvé en me relisant, il faut écrire la ligne 23 comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $nbdays = Delta_Days($expire1_annee, $expire1_mois, $expire1_jour, $expire2_annee, $expire2_mois, $expire2_jour );
    Par contre comment pourrais je faire pour faire un test pour que la première date soit bien inférieure à la deuxième?

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Délai d'expiration des cookies
    Par Sylvain James dans le forum XMLRAD
    Réponses: 40
    Dernier message: 22/03/2006, 10h22
  2. expiration du délai pour une page
    Par yahia dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 21/06/2004, 12h03
  3. Connexion ADO et SQL Server : délai d'execution expiré.
    Par denrette dans le forum Bases de données
    Réponses: 2
    Dernier message: 24/02/2004, 09h00
  4. Délai d'attente expiré
    Par amiral thrawn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/04/2003, 12h04

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