-
Notifications
You must be signed in to change notification settings - Fork 0
/
alse_change_user_passwords_manual.sh
51 lines (43 loc) · 1.93 KB
/
alse_change_user_passwords_manual.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# Данный скрипт позволяет вручную поменять пароли нескольким пользователям системы
# Если в аргументы скрипту ничего не передано, то скрипт извлекает из /etc/passwd всех несистемных пользователей и начинает изменять им пароль
# Иначе скрипт начинает изменять пароли всех учетных записей, переданных скрипту в аргументах
# Примеры использования скрипта:
# sudo ./alse_change_user_passwords_manual.sh
# sudo ./alse_change_user_passwords_manual.sh secadmin sysadmin user{1..27}
#!/usr/bin/env bash
_RED_COLOR="\e[1;31m"
_YELLOW_COLOR="\e[1;33m"
_COLOR_RESET="\e[0m"
if [[ $EUID != 0 ]]; then
echo -e "${_RED_COLOR}!!! Данный скрипт должен быть запущен от имени root !!!${_COLOR_RESET}"
exit 1
fi
function report_step {
echo -e "${_YELLOW_COLOR}[STEP] $1${_COLOR_RESET}"
}
function report_fail {
echo -e " ${_RED_COLOR}[FAIL] $1!${_COLOR_RESET}"
}
function change_password {
# Аргумент №1: логин пользователя, пароль которого необходимо изменить
user_gecos=$(grep $1 /etc/passwd | cut -d : -f 5 | cut -d , -f 1)
while true
do
report_step "Изменение пароля пользователя с логином \"$1\" ($user_gecos)";
if passwd $1; then
break
fi
done
}
if [[ $# == 0 ]]; then
users=$(awk -F: '$3 > 999 && $3 != 65534 {print $1}' /etc/passwd)
else
users=$@
fi
for user in $users; do
if id $user &> /dev/null; then
change_password $user
else
report_fail "Пользователь с логином \"$user\" отсутствует в системе"
fi
done