Dernière activité 1 week ago

Révision 168e683c562554c5e101653ba23d714c4ea4ae0c

test.sh Brut
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_i() {
28 local label=$1
29 local default_password="$(openssl rand -base64 12)"
30 local value
31
32 read -e -rp " ${CYAN}?${RESET} $label: " -i "${default_password}" value </dev/tty
33 echo "" >&2
34 echo "$value"
35}
36
37ask_password_visible() {
38 local label=$1
39 local default_password="$(openssl rand -base64 12)"
40 local value
41
42 printf " ${CYAN}?${RESET} $label [%s]: " "$default_password" >&2
43 read -r value </dev/tty
44
45 echo "${value:-$default_password}"
46}
47
48ask_password_visible2() {
49 local label=$1
50 local default_password="$(openssl rand -base64 12)"
51 local value
52
53 if [ -t 0 ] && [ -t 1 ] && command -v bash >/dev/null; then
54 # Только если настоящий интерактивный терминал
55 read -e -rp " ${CYAN}?${RESET} $label: " -i "$default_password" value </dev/tty 2>/dev/null || \
56 read -r -p " ${CYAN}?${RESET} $label [$default_password]: " value </dev/tty
57 else
58 read -r -p " ${CYAN}?${RESET} $label [$default_password]: " value </dev/tty
59 fi
60
61 echo "${value:-$default_password}"
62 echo "" >&2
63}
64
65pass1=$(ask_password_visible "Password (mixed case, digits, min 12 chars)")
66pass2=$(ask_password_visible2 "Password (mixed case, digits, min 12 chars)")
67pass3=$(ask_password_i "Password (mixed case, digits, min 12 chars):")
68
69summary_box "passC" "${pass3}"
70
71
72