Ultima attività 1 week ago

Revisione 8a7860313c80efc097b38fb79d3f5d6c1e26b9a2

test.sh Raw
1#!/usr/bin/env bash
2set -euo pipefail
3
4BOLD=$'\033[1m'
5DIM=$'\033[2m'
6RESET=$'\033[0m'
7RED=$'\033[0;31m'
8GREEN=$'\033[0;32m'
9YELLOW=$'\033[0;33m'
10BLUE=$'\033[0;34m'
11CYAN=$'\033[0;36m'
12
13summary_box() {
14 local width=60
15 local border
16 border=$(printf '─%.0s' $(seq 1 $width))
17 echo ""
18 echo " ${CYAN}${border}${RESET}"
19 while [ $# -gt 0 ]; do
20 printf " ${CYAN}${RESET} %-28s %s\n" "$1" "$2"
21 shift 2
22 done
23 echo " ${CYAN}${border}${RESET}"
24 echo ""
25}
26
27ask_password_visible() {
28 local label=$1
29 local default_password="$(openssl rand -base64 12)"
30 local value
31
32 printf " ${CYAN}?${RESET} $label [%s]: " "$default_password" >&2
33 read -r value </dev/tty
34
35 echo "${value:-$default_password}"
36}
37
38ask_password_visible2() {
39 local label=$1
40 local default_password="$(openssl rand -base64 12)"
41 local value
42
43 if [ -t 0 ] && [ -t 1 ] && command -v bash >/dev/null; then
44 # Только если настоящий интерактивный терминал
45 read -e -rp " ${CYAN}?${RESET} $label: " -i "$default_password" value </dev/tty 2>/dev/null || \
46 read -r -p " ${CYAN}?${RESET} $label [$default_password]: " value </dev/tty
47 else
48 read -r -p " ${CYAN}?${RESET} $label [$default_password]: " value </dev/tty
49 fi
50
51 echo "${value:-$default_password}"
52 echo "" >&2
53}
54
55pass1=$(ask_password_visible "Password (mixed case, digits, min 12 chars)")
56pass2=$(ask_password_visible2 "Password (mixed case, digits, min 12 chars)")
57
58summary_box \
59"1" "${pass1}" \
60"2" "${pass2}"
61
62