#!/usr/bin/env bash set -euo pipefail BOLD=$'\033[1m' DIM=$'\033[2m' RESET=$'\033[0m' RED=$'\033[0;31m' GREEN=$'\033[0;32m' YELLOW=$'\033[0;33m' BLUE=$'\033[0;34m' CYAN=$'\033[0;36m' summary_box() { local width=60 local border border=$(printf '─%.0s' $(seq 1 $width)) echo "" echo " ${CYAN}${border}${RESET}" while [ $# -gt 0 ]; do printf " ${CYAN}│${RESET} %-28s %s\n" "$1" "$2" shift 2 done echo " ${CYAN}${border}${RESET}" echo "" } ask_password_i() { local label=$1 local default_password="$(openssl rand -base64 12)" local value read -e -rp " ${CYAN}?${RESET} $label: " -i "${default_password}" value &2 echo "$value" } ask_password_visible() { local label=$1 local default_password="$(openssl rand -base64 12)" local value printf " ${CYAN}?${RESET} $label [%s]: " "$default_password" >&2 read -r value /dev/null; then # Только если настоящий интерактивный терминал read -e -rp " ${CYAN}?${RESET} $label: " -i "$default_password" value /dev/null || \ read -r -p " ${CYAN}?${RESET} $label [$default_password]: " value &2 } pass1=$(ask_password_visible "Password (mixed case, digits, min 12 chars)") pass2=$(ask_password_visible2 "Password (mixed case, digits, min 12 chars)") pass3=$(ask_password_i "Password (mixed case, digits, min 12 chars):") summary_box \ "passA" "${pass1}" \ "passB" "${pass2}" \ "passC" "${pass3}" \