#!/bin/bash generate_password() { local groups=4 local include_special=0 # Параметры (например: generate_password 6 1) if [[ $1 =~ ^[0-9]+$ ]]; then groups=$1; fi if [[ $2 == "1" ]]; then include_special=1; fi # Безопасные символы local lower="abcdefghjkmnpqrtuvwxyz" local upper="ACDEFGHJKLMNPQRTUVWXY" local digits="23456789" local special="!@#%+=" local any="${lower}${upper}${digits}" [[ $include_special == 1 ]] && any="${any}${special}" local password="" for ((i = 0; i < groups; i++)); do c1="${lower:RANDOM%${#lower}:1}" c2="${upper:RANDOM%${#upper}:1}" c3="${digits:RANDOM%${#digits}:1}" c4="${any:RANDOM%${#any}:1}" # Перемешать символы в блоке block=$(echo "$c1$c2$c3$c4" | fold -w1 | shuf | tr -d '\n') password+="$block" [[ $i -lt $((groups - 1)) ]] && password+="-" done echo "$password" } # Примеры: #generate_password # по умолчанию 4 группы без спецсимволов generate_password 15 1 # 5 групп, включить спецсимволы