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

Shell et commandes GNU Discussion :

[ksh] Générer un mot de passe aléatoire avec des contraintes obligatoires


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur de Production
    Inscrit en
    mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de Production
    Secteur : Finance

    Informations forums :
    Inscription : mai 2009
    Messages : 18
    Points : 16
    Points
    16
    Par défaut [ksh] Générer un mot de passe aléatoire avec des contraintes obligatoires
    BOnjour

    Pour des besoin d'automatisation de changement de MDP dans notre boite, j'ai commencer a bosser sur un script qui va
    - generer un mdp
    - changer le mdp en base
    - changer le mdp dans les conf tomcat + relance
    - changer le mdp dans d'autre fichiers (suivant un patern)

    pour le moment ca marche, pas contre je m'appercoit que le Mdp generer ne respecte pas toujours les contraintes imposé

    pour un Mdp en base, il doit etre de 12 caractère minimum, contenit une MAJ, une min, un chiffre et un caractère special

    pour ma generation j'utilise cette commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    </dev/urandom tr -dc '!@%*()_A-Z-a-z-0-9' 2>/dev/null | head -c14
    par contre j'ai tout, mais parfois il manque le caractère special
    y'a t'il un possibilité pour imposer la presence d'une maj, d'une mi, d'un chiffre et d'un caractère special dans la generation ?

    Je ne suis pas admin, donc je peut pas installer d'outil tierce specifique.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    février 2008
    Messages
    6 914
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2008
    Messages : 6 914
    Points : 17 855
    Points
    17 855
    Par défaut
    à part tester des regex, et recommencer si tous les tests échouent, je ne vois pas.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    septembre 2005
    Messages
    4 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : septembre 2005
    Messages : 4 848
    Points : 12 222
    Points
    12 222
    Par défaut
    Bonjour

    Dans ton cas, je tirerais successivement chacun des 4 caractères obligatoires, je tirerais la quantité de caractères manquants (supérieure à 8) et je tirerais les caractères manquants, et je mélangerais. 4 opérations de base que tu sais faire.

    Et si le hasard tire 'SesameOuvreT0i!', je pleure de rire.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur de Production
    Inscrit en
    mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de Production
    Secteur : Finance

    Informations forums :
    Inscription : mai 2009
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Ok, merci pour vos réponse et ta suggestion FLo, du coup j'ai opter pour autre chose, plus comprehensible pour mes successeur futur si besoin de modif

    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
     
    fl_shuffle() {
       #E1 : chaine
       #E2 : taille
       #S1 : resultat
       echo "$1" | fold -w1 | shuf | head -$2 | tr -d "\n"
    }
     
    _spec="{}()-_@!%"
    _min="abcdefghijklmnopqrstuvwxyz"
    _maj=$(echo "${_min}" | tr "[:lower:]" "[:upper:]")
    _num="0123456789"
     
    #tirage 2 spec, 2 num, 4 min et 4 maj
    _fin="$(fl_shuffle ${_spec} 2)$(fl_shuffle ${_num} 2)$(fl_shuffle ${_min} 4)$(fl_shuffle ${_maj} 4)"
    #remelange final
    _fin="$(echo ${_fin} | fold -w1 | shuf | tr -d '\n')"

  5. #5
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    septembre 2005
    Messages
    4 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : septembre 2005
    Messages : 4 848
    Points : 12 222
    Points
    12 222
    Par défaut
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    février 2008
    Messages
    6 914
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2008
    Messages : 6 914
    Points : 17 855
    Points
    17 855
    Par défaut
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ printf -v maj '%s' {A..Z}
    $ printf -v min '%s' {a..z}
    $ echo "$min"
    abcdefghijklmnopqrstuvwxyz
    ce ne sont pas plutôt les fonctions qu'on fait précéder d'un soulignement, pour les différencier des commandes ?
    les variables ont toujours le $ qui les distingue.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieur de Production
    Inscrit en
    mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de Production
    Secteur : Finance

    Informations forums :
    Inscription : mai 2009
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    @flo
    le ${min^^} marche en bash, mais nous on est en ksh, du coup ca passe pas
    le shuf -r c'est pour autoriser des repentions de lignes, vu que j'ai deja la taille qu'il me faut avec mes tirages, j'ai pas besoin de faire des répétitions

    @N_Bah
    apres les gouts et les couleur :p
    ils ont des normes speciales ici, herité d'ancien dev d'on ne sait ou qu'on doit respecter, et comment ils veulent pas changer, on fait ce qui ressemble pour etre tranquille.

  8. #8
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    décembre 2012
    Messages
    3 970
    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 : 3 970
    Points : 11 688
    Points
    11 688
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ echo $XX
    abcdef
    $ typeset -u yy=$XX
    $ echo $yy
    ABCDEF
    Cordialement.

Discussions similaires

  1. Code Aléatoire avec des contraintes
    Par salah1846 dans le forum Prolog
    Réponses: 5
    Dernier message: 14/04/2019, 15h35
  2. Réponses: 2
    Dernier message: 20/12/2018, 12h47
  3. [PHP 5.4] Mot de passe aléatoire avec a-z, A-Z et 0-9
    Par dancom5 dans le forum Langage
    Réponses: 10
    Dernier message: 16/03/2017, 00h23
  4. Réponses: 1
    Dernier message: 26/01/2017, 13h33
  5. [Tableaux] Générer un mot de passe avec rand();
    Par Shuriskn dans le forum Langage
    Réponses: 7
    Dernier message: 21/11/2008, 07h22

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