Генерация двух случайных символов для пароля MySQL в Bash

Привет, у меня есть скрипт bash, который я написал для моей установки plesk.

Он срабатывает при создании новой подписки и выполняет следующие действия:

  • Генерирует пароль в заданном формате, используя два случайных символа
  • Создает БД в plesk через cli
  • Загружает и распаковывает WordPress в каталог httpdocs этой подписки
  • Настраивает wp-config.php для сайта
  • Присылайте мне детали конфигурации

Одна проблема, однако, иногда я генерирую два символа, которые, кажется, делают недействительной мою строку пароля. Я думаю, это потому, что некоторые символы нужно экранировать в bash, а этого не происходит. Есть ли способ, которым я могу случайно получить два символа из массива "разрешенных" символов?

Вот моя функция genPassword()

genpasswd() {
local pass=`cat /dev/urandom | tr -cd "[:punct:]" | head -c 2`
echo "$pass"
echo "INFO: genpasswd() ran successfully" >> /usr/run.log
}

1 ответ

Решение

Использование массивов bash и "волшебной" переменной RANDOM может помочь:

bash$ symbols=(":" "+" ";" ".")
bash$ echo ${symbols[ RANDOM % ${#symbols[@]} ]}
;

bash$ echo ${symbols[ RANDOM % ${#symbols[@]} ]}
+

Если вам нужно сгенерировать пару (например):

bash$ s1=${symbols[ RANDOM % ${#symbols[@]} ]}
bash$ s2=${symbols[ RANDOM % ${#symbols[@]} ]}
bash$ echo "${s1}${s2}"
;:
Другие вопросы по тегам