Последняя активность 1 day ago

KarelWintersky ревизий этого фрагмента 1 day ago. К ревизии

Без изменений

KarelWintersky ревизий этого фрагмента 1 day ago. К ревизии

1 file changed, 98 insertions

vhostpwgen.sh(файл создан)

@@ -0,0 +1,98 @@
1 + #!/bin/bash
2 + VERSION='1.0'
3 +
4 + generate_password() {
5 + openssl rand -base64 12 | tr -d '/+' | cut -c1-16
6 + }
7 +
8 + user_exists() {
9 + grep -q "^$1:" .htpasswd 2>/dev/null || grep -q "^$1 / " .htpasswd.txt 2>/dev/null
10 + }
11 +
12 + echo ""
13 + echo "=== Генератор паролей для Nginx (Basic Auth) ==="
14 + echo ""
15 +
16 + # Проверка файлов
17 + touch .htpasswd .htpasswd.txt
18 +
19 + # Ввод имени пользователя с проверкой
20 + while true; do
21 + read -p "Введите имя пользователя: " USERNAME
22 +
23 + if [[ -z "$USERNAME" ]]; then
24 + echo "Имя пользователя не может быть пустым!"
25 + continue
26 + fi
27 +
28 + if user_exists "$USERNAME"; then
29 + echo "Ошибка: пользователь '$USERNAME' уже существует!"
30 + read -p "Перезаписать? (y/N): " OVERWRITE
31 +
32 + if [[ "$OVERWRITE" =~ [Yy] ]]; then
33 + # Удаляем старые записи
34 + sed -i "/^$USERNAME:/d" .htpasswd
35 + sed -i "/^$USERNAME \/ /d" .htpasswd.txt
36 + echo "Старые записи пользователя удалены."
37 + break
38 + else
39 + continue
40 + fi
41 + else
42 + break
43 + fi
44 + done
45 +
46 + # Генерация пароля
47 + while true; do
48 + PASSWORD=$(generate_password)
49 + echo "--------------------------------"
50 + echo "Сгенерирован пароль: $PASSWORD"
51 + read -p "Использовать этот пароль? (Enter - принять, N - ввести вручную, AnyKey - сгенерировать новый): " CHOICE
52 +
53 + case "$CHOICE" in
54 + [Yy]|"" )
55 + echo "Пароль принят."
56 + break
57 + ;;
58 + [Nn] )
59 + while true; do
60 + read -s -p "Введите пароль: " PASSWORD
61 + echo
62 +
63 + if [[ -z "$PASSWORD" ]]; then
64 + echo "Пароль не может быть пустым!"
65 + continue
66 + fi
67 +
68 + read -s -p "Повторите пароль: " PASSWORD2
69 + echo
70 +
71 + if [[ "$PASSWORD" != "$PASSWORD2" ]]; then
72 + echo "Пароли не совпадают!"
73 + else
74 + break
75 + fi
76 + done
77 + break
78 + ;;
79 + * )
80 + continue
81 + ;;
82 + esac
83 + done
84 +
85 + # Добавление записей
86 + HASH=$(openssl passwd -apr1 "$PASSWORD")
87 + echo "$USERNAME:$HASH" >> .htpasswd
88 + echo "$USERNAME / $PASSWORD" >> .htpasswd.txt
89 +
90 + # Итог
91 + echo "--------------------------------"
92 + echo "Данные успешно добавлены:"
93 + echo "Файл для Nginx: .htpasswd"
94 + echo "Резервная копия: .htpasswd.txt"
95 + echo "--------------------------------"
96 + echo "Логин: $USERNAME"
97 + echo "Пароль: $PASSWORD"
98 + echo "--------------------------------"
Новее Позже