random-string()
{
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-8} | head -n 1
}
Utilisation de ce script pour générer une liste de plusieurs milliers de mots de passe alphanumériques à 8 chiffres aléatoires.
Existe-t-il un moyen d'ajouter à ce script pour enregistrer les mots de passe générés dans un fichier .txt?
Je suis un peu nouveau sur Linux et j'ai trouvé de nombreuses ressources sur le Web, mais je suis perplexe sur celui-ci.
Vous avez défini une fonction random-string()
pour générer des mots de passe aléatoires contenant A-Za-z0-9
et en affichant uniquement le plus haut (head -1
), à partir de votre question, il n'est pas clair que vous souhaitez enregistrer les mots de passe générés après une exécution à chaque fois dans un fichier ou que vous souhaitez le faire de manière récursive.
Permettez-moi de simplifier votre commande d'abord:
tr -dc '[:alnum:]' </dev/urandom | fold -w 8 | head -n 1
tr
prend la classe de caractères [:alnum]
qui désigne les caractères A-Za-z0-9
Il n'y a pas besoin de cat
, passez le nom de fichier via STDIN à tr
Expansion des paramètres fold -w ${1:-8}
n'est pas nécessaire, utilisez simplement fold -w 8
Maintenant, pour enregistrer la sortie après une exécution de la fonction (un seul mot de passe), cela écrasera le fichier à chaque fois, utilisez le shell >
opérateur de redirection:
$ random_string () { tr -dc '[:alnum:]' </dev/urandom | fold -w 8 | head -n 1 ;} >foobar
$ random_string
$ cat foobar
MqJdehaO
Nous enregistrons le STDOUT de la fonction random_string
au fichier foobar
dans le répertoire courant.
Lors de la prochaine exécution, le fichier sera remplacé par le nouveau contenu:
$ random_string
$ cat foobar
NP85OmWw
Pour écraser le fichier, par exemple spamegg
utilisez >>
redirection ce qui signifie que le STDOUT de la fonction sera ajouté au fichier à chaque fois que nous l'exécutons:
$ random_string () { tr -dc '[:alnum:]' </dev/urandom | fold -w 8 | head -n 1 ;} >>spamegg
$ random_string
$ cat spamegg
vjwOe6TB
$ random_string
$ cat spamegg
vjwOe6TB
TBkv6qPh
Pour le rendre plus flexible, nous pouvons définir le nombre de mots de passe que nous voulons enregistrer en une seule fois en fournissant le numéro via le numéro comme premier argument de la fonction:
$ random_string () { tr -dc '[:alnum:]' </dev/urandom | fold -w 8 | head -n "$1" ;} >foobar
$ random_string 5
$ cat foobar
AV79dZeC
byitWYfX
eDBAldiI
6OxNU78H
gRs7SwEO
Comme vous pouvez le voir, 5 mots de passe ont été générés et enregistrés dans le fichier foobar
, modifiez 5
avec le nombre de mots de passe souhaité.
Utilisation de redirection d'E/S
your_script 1>> pwd_list
pour rediriger et ajouter stdout au fichier pwd_list
.
PAR EXEMPLE.
#!/bin/bash
random-string()
{
tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w "${1:-8}" | head -n 1
}
if [ -f out_pwd ]; then
rm out_pwd
fi
COUNTER=0
while [ "$COUNTER" -le 10 ]; do
random-string "$@" 1>> pwd_list
done
exit 0
et lancez simplement le script, la sortie dans le fichier pwd_list
fait partie du script
ou utilisez ce script pour rediriger la sortie dans le fichier pwd_list
lorsque vous démarrez le script
#!/bin/bash
random-string()
{
tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w "${1:-8}" | head -n 1
}
COUNTER=0
while [ "$COUNTER" -le 10 ]; do
random-string "$@"
done
exit 0
et lancez le script avec
script_name 1>> pwd_list