Salvando senhas geradas em um arquivo .txt

2
random-string()
{
    cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-8} | head -n 1
}

Usando este script para gerar uma lista de vários milhares de senhas alfanuméricas aleatórias de 8 dígitos.

Existe alguma maneira de adicionar este script para salvar as senhas geradas em um arquivo .txt?

Sou meio novo no Linux e encontrei muitos recursos na Web, mas estou perplexo com este.

    
por jkwages 01.08.2015 / 18:14

2 respostas

1

Você definiu uma função random-string() para gerar senhas aleatórias contendo A-Za-z0-9 e exibindo apenas a mais alta ( head -1 ), da sua pergunta não está claro se você deseja salvar as senhas geradas após uma execução cada vez para um arquivo ou você quer fazer isso de forma recursiva.

Deixe-me simplificar seu comando primeiro:

tr -dc '[:alnum:]' </dev/urandom | fold -w 8 | head -n 1
  • tr recebe a classe de caractere [:alnum] , que indica caracteres A-Za-z0-9

  • Não há necessidade de cat , passar o nome do arquivo via STDIN para tr

  • A expansão de parâmetro fold -w ${1:-8} não é necessária, basta usar fold -w 8

Agora, para salvar a saída após uma execução da função (somente uma senha), isso substituirá o arquivo toda vez, use o operador de redirecionamento > do shell:

$ random_string () { tr -dc '[:alnum:]' </dev/urandom | fold -w 8 | head -n 1 ;} >foobar

$ random_string

$ cat foobar 
MqJdehaO

Estamos salvando o STDOUT da função random_string no arquivo foobar no diretório atual.

Na próxima execução, o arquivo será substituído pelo novo conteúdo:

$ random_string

$ cat foobar 
NP85OmWw

Para substituir o arquivo, por exemplo spamegg use >> redirecionamento, o que significa que o STDOUT da função será anexado ao arquivo sempre que for executado:

$ 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

Para torná-lo mais flexível, podemos definir quantas senhas queremos salvar em uma corrida, fornecendo o número via número como o primeiro argumento para a função:

$ random_string () { tr -dc '[:alnum:]' </dev/urandom | fold -w 8 | head -n "" ;} >foobar

$ random_string 5

$ cat foobar 
AV79dZeC
byitWYfX
eDBAldiI
6OxNU78H
gRs7SwEO

Como você pode ver, 5 senhas foram geradas e salvas no arquivo foobar , alterando 5 com qualquer número de senhas que você queira.

    
por heemayl 01.08.2015 / 18:57
2

Uso do redirecionamento de E / S

your_script 1>> pwd_list

para redirecionar e acrescentar stdout ao arquivo pwd_list .

E.G.

#!/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

e simplesmente inicie o script, a saída no arquivo pwd_list é parte do script

ou use este script para redirecionar a saída no arquivo pwd_list quando você iniciar o 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

e inicie o script com

script_name 1>> pwd_list
    
por A.B. 01.08.2015 / 18:24