random-string()
{
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-8} | head -n 1
}
Используя этот сценарий для генерации списка нескольких тысяч случайных 8 цифр алфавитно-цифровые пароли.
Есть ли какой-либо способ, которым я могу добавить к этому сценарию для сохранения сгенерированных паролей в .txt файл?
Я довольно плохо знаком с Linux и нашел много ресурсов в сети, но я озадачен на этом.
Вы определили функцию random-string()
генерировать случайные пароли, содержащие A-Za-z0-9
и вывод только самого верхнего (head -1
), от Вашего вопроса не ясно, что делают Вы хотите сохранить пароли, сгенерированные после одного выполненного каждый раз в файл, или Вы хотите сделать это рекурсивно.
Позвольте мне упростить Вашу команду сначала:
tr -dc '[:alnum:]' </dev/urandom | fold -w 8 | head -n 1
tr
посещает урок символов [:alnum]
который обозначает символы A-Za-z0-9
Нет никакой потребности в cat
, передайте имя файла через STDIN к tr
Расширение параметра fold -w ${1:-8}
не нужно, просто используйте fold -w 8
Теперь для сохранения вывода после одного выполнения функции (только один пароль) это перезапишет файл каждый раз, использовать оболочку >
оператор перенаправления:
$ random_string () { tr -dc '[:alnum:]' </dev/urandom | fold -w 8 | head -n 1 ;} >foobar
$ random_string
$ cat foobar
MqJdehaO
Мы сохраняем STDOUT функции random_string
в файл foobar
в текущем каталоге.
В следующем запуске файл будет перезаписан с новым содержанием:
$ random_string
$ cat foobar
NP85OmWw
Перезаписывать файл, например. spamegg
использовать >>
перенаправление, что означает STDOUT функции, будет добавлено в файл каждый раз, когда мы выполняем его:
$ 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
Для создания этого более гибким, мы можем определить, сколько паролей мы хотим сохранить в одном выполнении путем обеспечения числа через число как первый аргумент функции:
$ random_string () { tr -dc '[:alnum:]' </dev/urandom | fold -w 8 | head -n "$1" ;} >foobar
$ random_string 5
$ cat foobar
AV79dZeC
byitWYfX
eDBAldiI
6OxNU78H
gRs7SwEO
Поскольку Вы видите, что 5 паролей были сгенерированы и сохранены в файле foobar
, изменение 5
с любым количеством паролей Вы хотите.
Использование Перенаправления ввода-вывода
your_script 1>> pwd_list
перенаправить и добавить stdout в файл pwd_list
.
НАПРИМЕР.
#!/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
и просто запустите сценарий, вывод в файл pwd_list
часть сценария
или используйте этот сценарий, для перенаправления вывода в файле pwd_list
когда Вы запускаете сценарий
#!/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
и запустите сценарий с
script_name 1>> pwd_list