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

Python Discussion :

protection script par date


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    support technique
    Inscrit en
    Mars 2020
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : support technique

    Informations forums :
    Inscription : Mars 2020
    Messages : 79
    Par défaut protection script par date
    Bonjour à toutes et tous,

    Je voudrais autoriser l'exécution d'un script en fonction de la date.

    passer en ligne de commande: testsecu.exe touffic

    et que le script se lance si le mot de passe touffic est bien supérieur a la date actuelle

    j'avais prévu d'écrire ce bout de code mais bien évidement il ne fonctionne pas

    Sauriez vous me dire ce que j'ai mal fait SVP ?

    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
    from datetime import datetime
    import sys
    for arg in sys.argv:
        print(arg)
        match arg:
            case "touffic":
                touffic = datetime(2023, 7, 31)
                verif = touffic.date()
            case "le":
                le = datetime(2023, 8, 31)
                verif = le.date()
            case "magnific":
                magnific = datetime(2023, 9, 30)
                verif = magnific.date()
     
        if datetime.today().date() > verif:
            print('votre licence a expiré')
            print('merci de nous contacter')
            sys.exit()
     
    print('on peut continuer le script normalement')

  2. #2
    Membre confirmé
    Homme Profil pro
    support technique
    Inscrit en
    Mars 2020
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : support technique

    Informations forums :
    Inscription : Mars 2020
    Messages : 79
    Par défaut
    d'ailleurs

    PS F:\0_Code> & ........................................1/python.exe f:/0_code/testsecu.py magnific
    f:/0_code/testsecu.py
    magnific
    PS F:\0_Code>

    il prend bien l'argument passé et me le printe

    mais il ne me printe ni le problème de date antérieure, ni le fait que j'ai une date supérieure

    comme si il ne rentrait pas dans le "match case"

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    Citation Envoyé par figuedi Voir le message
    et que le script se lance si le mot de passe touffic est bien supérieur a la date actuelle
    mouais.... il faudrait déjà que la chaine de caractère ait le format d'une date pouvant être convertie avec datetime.strftime pour pouvoir le comparer. Est ce que vous pensez vraiement que "touffic" ressemble a une date?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre confirmé
    Homme Profil pro
    support technique
    Inscrit en
    Mars 2020
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : support technique

    Informations forums :
    Inscription : Mars 2020
    Messages : 79
    Par défaut
    Ben non touffic n'est pas une date

    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dt = datetime(2023, 10, 1)
    d = dt.date()
    if d < datetime.today().date():
       sys.exit()
    mais ce code fonctionne
    avec juste dt = touffic et d = verif
    apres le nom des variables importe peu non ?

  5. #5
    Membre confirmé
    Homme Profil pro
    support technique
    Inscrit en
    Mars 2020
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : support technique

    Informations forums :
    Inscription : Mars 2020
    Messages : 79
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import sys
    from datetime import datetime
    for arg in sys.argv:
        print(arg)
        match arg:
            case 'touffic':
                print('tu as rentré', arg)
                touffic = datetime(2023, 12, 1)
                verif = touffic.date()
                print(verif)
            case _:
                print("tu n'as pas rentré Touffic")
     
    print('on peut continuer le script normalement')
    donne bien comme résultat
    f:/0_Code/testSecu.py touffic
    f:/0_Code/testSecu.py
    tu n'as pas rentré Touffic
    touffic
    tu as rentré touffic
    2023-12-01
    on peut continuer le script normalement
    PS F:\0_Code>

    Donc ça marche bien malgré que touffic ne soit pas uen date

    me reste plus qu'à reprendre le script du haut pour voir ou j'avais fait l'erreur

  6. #6
    Membre confirmé
    Homme Profil pro
    support technique
    Inscrit en
    Mars 2020
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : support technique

    Informations forums :
    Inscription : Mars 2020
    Messages : 79
    Par défaut
    Je crois avoir compris

    D'apres ce que j'ai lu :

    argv se décompose
    argv[0] => nom du script
    argv[1] => premier argument
    ...
    ...
    comme dans mon script d'origine je n'avais pas prévu le cas ou on ne rentrait rien forcément il sortait du soft sans rien faire car 'testsecu.py' qui est argv[0] ne satisfaisait aucune condition.

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Citation Envoyé par figuedi Voir le message
    Donc ça marche bien malgré que touffic ne soit pas uen date
    ça dépend de ce qu'on veut mais au départ vous avez écrit: "Je voudrais autoriser l'exécution d'un script en fonction de la date."
    Là on se retrouve avec un script qui dépend d'une chaine de caractères... qui n'a rien à voir avec une date et qui affiche la date en guise de bienvenue.
    Pourquoi pas, juste qu'il faut savoir ce qu'on veut.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Si c'est le cas, la vérification de la date peut se faire après.
    De plus, fabriquer un datetime pour en sortir une date alors qu'on peut fabriquer une date directement et date.today() pour récupérer le jour courant n'est pas mal non plus.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Ce n'est pas le code que tu nous montres qui produit ce résultat.

    Le premier arg est le nom de script ("f:/0_code/testsecu.py"), donc le case/match ne créera jamais la référence verif ce qui lèvera une NameError.

    Une fois ce problème contourné, ton code fonctionne très bien.

  10. #10
    Membre confirmé
    Homme Profil pro
    support technique
    Inscrit en
    Mars 2020
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : support technique

    Informations forums :
    Inscription : Mars 2020
    Messages : 79
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Ce n'est pas le code que tu nous montres qui produit ce résultat.

    Le premier arg est le nom de script ("f:/0_code/testsecu.py"), donc le case/match ne créera jamais la référence verif ce qui lèvera une NameError.

    Une fois ce problème contourné, ton code fonctionne très bien.
    oui merci c'est que j'ai vu

    Citation Envoyé par wiztricks Voir le message
    ça dépend de ce qu'on veut mais au départ vous avez écrit: "Je voudrais autoriser l'exécution d'un script en fonction de la date."
    Là on se retrouve avec un script qui dépend d'une chaine de caractères... qui n'a rien à voir avec une date et qui affiche la date en guise de bienvenue.
    Pourquoi pas, juste qu'il faut savoir ce qu'on veut.

    - W
    Certes je n'ai pas été trop précis dans mon message mais en effet le but est de donner l'acces au soft pendant un temps donné, donc si je lui donne le mot de passe taratata il aura droit de l'utiliser jusqu'en Aout 2024 par exemple donc je bloque bien le logiciel en fonction de la date. Mais en effet c'était bien une simplification de langage.

    désolé

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

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