Как создать несколько файлов (100 файлов), и они могут содержать 30 случайных символов в каждом из них использующий сценарий

Я должен создать 100 файлов с помощью сценария Linux, которые содержат 30 случайных паролей символов, и тот пароль содержат только строки, строчные буквы и большие буквы. И названием каждого файла будет "Business.txt"

#!/bin/bash
for n in {1..100}; do
{ < /dev/urandom tr -dc A-Za-z0-9 | head -c${1:-30};echo; } > /mnt/mymnt/passwords/$n done
-1
задан 20 November 2018 в 12:41

3 ответа

Это не хорошая практика для открытия файла сто раз, когда этому на самом деле было нужно только однажды, таким образом, как насчет этого:

#!/bin/bash
random=$(</dev/urandom tr -dc A-Za-z0-9 | head -c3000)
for i in {1..100}; do
  echo ${random:(i-1)*30:30} >/mnt/mymnt/passwords/Business$i.txt
done

Это сначала сохраняет 3 000 случайных соответствий символов A-Za-z0-9 в переменной $random и затем циклы по номерам 1-100, исключающим части 30 символов и сохраняющим их.

1
ответ дан 27 October 2019 в 02:38

При записи этого ответа я думал, что можно получить то, что Вы хотите следующий путь, но еще не ясно, как Вы хотите сохранить пароли.

  1. Каталог изменения туда, где Вы хотите записать файл Business.txt.

  2. Тест, что можно создать файл вручную,

    echo 'testing' > Business.txt
    cat Business.txt
    
  3. Измените владение и полномочия при необходимости. Метод зависит от файловой системы.

  4. Создайте пароли,

    for n in {1..100}; do { < /dev/urandom tr -dc A-Za-z0-9 | head -c${1:-30};echo; } ;done > Business.txt
    
  5. Регистрируйте пароли Business.txt

    $ cat Business.txt 
    7rmJFCq2CZ9azpuxywFLwbjhmL2dD4
    dtLSVAEtDmyLUglkYFgUeGc9PDKBPb
    E3bnJ8WF4qoyS1Tokp6reAcpIkuLUt
    Y5whhtbJn1KfAccp85547gNDji2xLY
    ...
    

    Должно быть 100 строк

    $ wc -l Business.txt 
    100 Business.txt
    

Править:

Вы хотите 100 файлов с различными именами (и один пароль в каждом файле). Таким образом, шаги могут быть изменены согласно этому после списка.

2.1. Удалите тестовый файл.

    rm Business.txt
  1. Измененная командная строка: запишите в конечные файлы в цикле.

    for n in {1..100}; do { < /dev/urandom tr -dc A-Za-z0-9 | head -c${1:-30};echo; } > Business"$n".txt; done
    
  2. Проверьте, что файлы были записаны

    $ ls
    Business100.txt  Business28.txt  Business46.txt  Business64.txt  Business82.txt
    Business10.txt   Business29.txt  Business47.txt  Business65.txt  Business83.txt
    Business11.txt   Business2.txt   Business48.txt  Business66.txt  Business84.txt
    Business12.txt   Business30.txt  Business49.txt  Business67.txt  Business85.txt
    Business13.txt   Business31.txt  Business4.txt   Business68.txt  Business86.txt
    Business14.txt   Business32.txt  Business50.txt  Business69.txt  Business87.txt
    Business15.txt   Business33.txt  Business51.txt  Business6.txt   Business88.txt
    Business16.txt   Business34.txt  Business52.txt  Business70.txt  Business89.txt
    Business17.txt   Business35.txt  Business53.txt  Business71.txt  Business8.txt
    Business18.txt   Business36.txt  Business54.txt  Business72.txt  Business90.txt
    Business19.txt   Business37.txt  Business55.txt  Business73.txt  Business91.txt
    Business1.txt    Business38.txt  Business56.txt  Business74.txt  Business92.txt
    Business20.txt   Business39.txt  Business57.txt  Business75.txt  Business93.txt
    Business21.txt   Business3.txt   Business58.txt  Business76.txt  Business94.txt
    Business22.txt   Business40.txt  Business59.txt  Business77.txt  Business95.txt
    Business23.txt   Business41.txt  Business5.txt   Business78.txt  Business96.txt
    Business24.txt   Business42.txt  Business60.txt  Business79.txt  Business97.txt
    Business25.txt   Business43.txt  Business61.txt  Business7.txt   Business98.txt
    Business26.txt   Business44.txt  Business62.txt  Business80.txt  Business99.txt
    Business27.txt   Business45.txt  Business63.txt  Business81.txt  Business9.txt
    

    Должно быть 100 файлов (с одним паролем в каждом файле)

    $ ls -1 Business*|wc -l
    100
    
  3. Регистрируйте пароли Business1.txt, Business2.txt ...

    $ cat Business*
    43xx3zUEJ5wCPLzhagmQJcWHP2cvW1
    GCRZ8uJdxQEKXRBc2hoZREpiWseFll
    CKwYTghXjJOcBuufODKWnFohG1TKel
    ZMXPyNTxIENfoWlF7cfkPxCBkQpLt1
    ...
    
1
ответ дан 27 October 2019 в 02:38

Единственным путем я мог с готовностью найти для получения чего-то от/dev/urandom для того, что Вы хотите, должен использовать команду dd. С тех пор/dev/urandom выходные биты сырых данных, с помощью команды TR получит печатаемые символы, но если Вы хотите 30 печатаемых символов, необходимо получить больше чем 30 байтов от dd. Так, я пошел с 300. Вы можете использование команда сокращения для получения первых 30 печатаемых символов.

Вот сценарий:

#!/bin/bash

for n in {1..100}; do
  p=$(dd if=/dev/urandom bs=1 count=300 2>/dev/null | tr -dc A-Za-z0-9 | cut -c 1-30)
  echo "${p}" >${n}
done

exit 0

Надеюсь, это поможет.

0
ответ дан 27 October 2019 в 02:38

Другие вопросы по тегам:

Похожие вопросы: