[Shell] - Générer une chaine aléatoire
Résolu/Fermé
Phiphi57
Messages postés
789
Date d'inscription
samedi 26 février 2005
Statut
Contributeur
Dernière intervention
19 juillet 2009
-
11 août 2006 à 22:08
faf2019 - 16 avril 2013 à 13:22
faf2019 - 16 avril 2013 à 13:22
A voir également:
- [Shell] - Générer une chaine aléatoire
- Chaine tnt gratuite sur mobile - Guide
- Generer mot de passe - Télécharger - Sécurité
- Classic shell windows 11 - Télécharger - Personnalisation
- Nouvelle chaîne tnt gratuite 2024 - Accueil - TV & Vidéo
- Chaine radio - Télécharger - Médias et Actualité
12 réponses
date +%s | sha256sum | base64 | head -c 8 ; echo
< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-8};echo;
openssl rand -base64 4
< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-8};echo;
openssl rand -base64 4
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 août 2006 à 04:22
12 août 2006 à 04:22
Re,
en shell
en shell
#!/bin/bash M="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" while [ "${n:=1}" -le "8" ] do pass="$pass${M:$(($RANDOM%${#M})):1}" let n+=1 done echo "$pass"lami20j
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
12 août 2006 à 11:40
12 août 2006 à 11:40
Salut,
Ben te voilà "guru" maintenant ;-))
Sinon, sous Mndriva le "mkpasswd" installé n'est pas du tout le même que sous Debian, la preuve :
;-\
Sinon j'ai trouvé ça sur le Net (en Perl) : http://www.ajs.com/~ajs/mkpasswd.html
:-))
Ben te voilà "guru" maintenant ;-))
Sinon, sous Mndriva le "mkpasswd" installé n'est pas du tout le même que sous Debian, la preuve :
[jp@MDK tmpfs]$ mkpasswd EHbb.93nh [jp@MDK tmpfs]$ mkpasswd s7~bVZ0xu [jp@MDK tmpfs]$ mkpasswd -l 8 -C 3 -s 0 BM91hAyg [jp@MDK tmpfs]$Il date de 1994 :
AUTHOR Don Libes, National Institute of Standards and Technology mkpasswd is in the public domain. NIST and I would appreciate credit if this program or parts of it are used. 22 August 1994 MKPASSWD(1)et ne gère pas le "--hash=" ni le "salt"...
;-\
Sinon j'ai trouvé ça sur le Net (en Perl) : http://www.ajs.com/~ajs/mkpasswd.html
:-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
12 août 2006 à 11:45
12 août 2006 à 11:45
Salut,
donc j'avais raison de demander reveiller les Maîtres
lami20j
donc j'avais raison de demander reveiller les Maîtres
lami20j
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
12 mars 2008 à 07:10
12 mars 2008 à 07:10
Voir également pwgen (disponible évidemment sous debian)
https://sourceforge.net/projects/pwgen/
Johan
https://sourceforge.net/projects/pwgen/
Johan
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
11 août 2006 à 22:20
11 août 2006 à 22:20
Salut,
Exemples
perl -e '@c=("A".."Z","a".."z",0..9);print join("",@c[map{rand @c}(1..8)]),"\n"'Le caractère \n est seulement pour affichage.
Exemples
$ perl -e '@c=("A".."Z","a".."z",0..9);print join("",@c[map{rand @c}(1..8)]),"\n"' stY7q8Is $ perl -e '@c=("A".."Z","a".."z",0..9);print join("",@c[map{rand @c}(1..8)]),"\n"' DzeO5pmC $ perl -e '@c=("A".."Z","a".."z",0..9);print join("",@c[map{rand @c}(1..8)]),"\n"' lZAdufLslami20j
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
11 août 2006 à 22:40
11 août 2006 à 22:40
Re,
et avec mkpasswd
et avec mkpasswd
mkpasswd --hash=md5 `perl -e '@c=("A".."Z","a".."z",0..9);print join("",@c[map{rand @c}(1..8)])'`lami20j
Phiphi57
Messages postés
789
Date d'inscription
samedi 26 février 2005
Statut
Contributeur
Dernière intervention
19 juillet 2009
295
11 août 2006 à 22:52
11 août 2006 à 22:52
Salut!
Merci pour cette réponse rapide!!!
il me semblait effectivement avoir vu trainer ce truc avec perl (qui est un langage que je ne connaissais pas du tout...)
deux petites questions subsdidiaires tant que j'y suis :
1-/ y a t il un équivalent purement "bash"?
2-/ Question sous-jacente : perl est il installé par défaut sur tout os GNU/Linux? (l'idée étant d'avoir une méthode basique qui fonctionne a coup sûr chez n'importe qui, pour la mettre éventuellement dans un tuto...)
Sinon, pour mes propres besoins, RAS, ta solution est parfaite!
Merci encore!
Phiphi
Merci pour cette réponse rapide!!!
il me semblait effectivement avoir vu trainer ce truc avec perl (qui est un langage que je ne connaissais pas du tout...)
deux petites questions subsdidiaires tant que j'y suis :
1-/ y a t il un équivalent purement "bash"?
2-/ Question sous-jacente : perl est il installé par défaut sur tout os GNU/Linux? (l'idée étant d'avoir une méthode basique qui fonctionne a coup sûr chez n'importe qui, pour la mettre éventuellement dans un tuto...)
Sinon, pour mes propres besoins, RAS, ta solution est parfaite!
Merci encore!
Phiphi
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
11 août 2006 à 22:55
11 août 2006 à 22:55
Re,
y a t il un équivalent purement "bash"?
Je pense que oui. Mais il faut reveiller les maîtres jipicy, asevere, jisisv, ... ;)
perl est il installé par défaut sur tout os GNU/Linux?
Oui. Perl est integré dans tout système GNU/Linux.
lami20j
y a t il un équivalent purement "bash"?
Je pense que oui. Mais il faut reveiller les maîtres jipicy, asevere, jisisv, ... ;)
perl est il installé par défaut sur tout os GNU/Linux?
Oui. Perl est integré dans tout système GNU/Linux.
lami20j
Phiphi57
Messages postés
789
Date d'inscription
samedi 26 février 2005
Statut
Contributeur
Dernière intervention
19 juillet 2009
295
12 août 2006 à 09:41
12 août 2006 à 09:41
Merci pour tout, c'est nickel!
Phiphi
Phiphi
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
11 mars 2008 à 22:40
11 mars 2008 à 22:40
J'essaye de faire un scripts base sur celui ci.
L'idee est de permettre la commande suivantes :
Mon code est le suivant :
Les problemes sont les suivants :
1) Pourquoi mes doubles espaces sont supprimes dans la variable syntax
2) *[0-9] reconnait les nombres mais aussi 3r5
Quelle syntaxe utiliser pour capter uniquement les combinaisons de chiffres
3) [aA0] reconnait a, A et 0 mais pas aA, A0, etc...
Quelle syntaxe utiliser pour capter toutes les combinaisons possibles de a, A et 0
Merci d'avoir presente ce bout de code qui me pernet d'en decouvrir toujours plus sur les scripts
Santiago
L'idee est de permettre la commande suivantes :
pwgen [length] [-aA0] length la longueur du mot de passe -a utiliser des minuscules -A utiliser des majuscules -0 utiliser des chiffres
Mon code est le suivant :
#!/bin/bash # http://www.commentcamarche.net/forum/affich 2335882 shell generer une chaine aleatoire syntax="`basename $0` [length] [-aA0]\n length password length" # Read parameters while [ $# -gt 0 ]; do case "$1" in *[0-9]) [ $l ] && (echo -e $syntax; exit 1) l=$1 ;; -[aA0]) ;; *) echo -e $syntax; exit 1 ;; esac shift done # Set default [ $l ] || l=8 [ $M ] || M="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" while [ "${n:=1}" -le "$l" ] do pass="$pass${M:$(($RANDOM%${#M})):1}" let n+=1 done echo "$pass"
Les problemes sont les suivants :
1) Pourquoi mes doubles espaces sont supprimes dans la variable syntax
2) *[0-9] reconnait les nombres mais aussi 3r5
Quelle syntaxe utiliser pour capter uniquement les combinaisons de chiffres
3) [aA0] reconnait a, A et 0 mais pas aA, A0, etc...
Quelle syntaxe utiliser pour capter toutes les combinaisons possibles de a, A et 0
Merci d'avoir presente ce bout de code qui me pernet d'en decouvrir toujours plus sur les scripts
Santiago
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
11 mars 2008 à 23:01
11 mars 2008 à 23:01
Encore un autre probleme.
Ligne 10
En cas d'erreur, la syntaxe est bien affichee mais exit 1 n'est pas respecte. Le programme continue.
J'ai remplace par
Ca marche mais c'est completement par hasard apres moultes tentatives.
Est ce que quelqu'un connait la syntaxe correcte d'un if then sur une seule ligne ?
Ligne 10
[ $l ] && (echo -e $syntax; exit 1)
En cas d'erreur, la syntaxe est bien affichee mais exit 1 n'est pas respecte. Le programme continue.
J'ai remplace par
[ $l ] && echo -e $syntax && exit 1
Ca marche mais c'est completement par hasard apres moultes tentatives.
Est ce que quelqu'un connait la syntaxe correcte d'un if then sur une seule ligne ?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 mars 2008 à 06:40
12 mars 2008 à 06:40
Salut,
1. il faut utliser "$syntax"
2. *[0-9] veut dire n'importe quel caractère n'importe combien des fois suit d'un chiffire
si tu écrit r5 ça ne marche pas en revanche si tu écrit 3r5 le 1er caractère c'est un chiffre (mais attention pas un entier) donc 3r5 sera afficher
regarde ici
http://www.commentcamarche.net/faq/sujet 4605 shell tester une variable numerique#expr
3. mieux vaux utliser getopts
voici un test
1. il faut utliser "$syntax"
2. *[0-9] veut dire n'importe quel caractère n'importe combien des fois suit d'un chiffire
si tu écrit r5 ça ne marche pas en revanche si tu écrit 3r5 le 1er caractère c'est un chiffre (mais attention pas un entier) donc 3r5 sera afficher
regarde ici
http://www.commentcamarche.net/faq/sujet 4605 shell tester une variable numerique#expr
3. mieux vaux utliser getopts
voici un test
lami20j@debian:~$ cat generer_passwd.sh #!/bin/bash syntax="`basename $0` [length] [-aA0]\n length password length" case "$1" in *[0-9]) if let $1 2>/dev/null then echo $1 else echo -e "$syntax" fi ;; *) echo -e "$syntax"; exit 1 ;; esac lami20j@debian:~$ sh generer_passwd.sh 355 355 lami20j@debian:~$ sh generer_passwd.sh 3 3 lami20j@debian:~$ sh generer_passwd.sh 3r generer_passwd.sh [length] [-aA0] length password length lami20j@debian:~$ sh generer_passwd.sh 3r5 generer_passwd.sh [length] [-aA0] length password length lami20j@debian:~$ sh generer_passwd.sh rrr generer_passwd.sh [length] [-aA0] length password length
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
12 mars 2008 à 07:00
12 mars 2008 à 07:00
Salut,
3. mieux vaux utliser getopts
Voir : http://www.commentcamarche.net/forum/affich 2520040 parametres commencant par un tiret#2
3. mieux vaux utliser getopts
Voir : http://www.commentcamarche.net/forum/affich 2520040 parametres commencant par un tiret#2