web-dev-qa-db-fra.com

Enregistrement des mots de passe générés dans un fichier .txt

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.

2
jkwages

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é.

1
heemayl

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
2
A.B.