Я пытаюсь передать содержимое переменной $ PASSWORD в passwd, используя expect. Это, похоже, работает, добавив пользователей, но как только вы попытаетесь войти в систему через ssh с одним из пользователей, это не сработает. Если я задаю пароль вручную, это будет хорошо.Ожидание не передает ввод passwd в сценарии bash
Неужели кто-нибудь столкнулся с этой проблемой раньше?
USERS=(user1 user2 user3)
generatePassword()
{
pwgen 16 -N 1
}
# Check if user is root
if [ $(whoami) != 'root' ]; then
echo "Must be root to run $0"
exit 1;
fi
# Check if pwgen is installed:
if [[ $(dpkg -s pwgen > /dev/null 2>&1; echo ${PIPESTATUS}) != '0' ]]; then
echo -e "pwgen is not installed, this script will not work without it\n\n'apt-get install pwgen'\n"
exit 1;
else
echo -e "Starting Script...\n\n"
fi
# Iterate through users and add them with a password
for i in ${USERS[@]}; do
PASSWORD=$(generatePassword)
echo "$i $PASSWORD" >> passwords
useradd -m "${i}"
echo -e "Adding $i with a password of '$PASSWORD'\n"
expect -c "
spawn passwd ${i}
expect \"Enter new UNIX password:\"
send -- \"$PASSWORD\r\"
send -- \"\r\"
expect \"Retype new UNIX password:\"
send -- \"$PASSWORD\r\"
send -- \"\r\"
"
echo -e "\nADDED $i with a password of '$PASSWORD'\n"
done
Ewww. Вы выполняете замену строк в содержимом, которое предполагается использовать для анализа в качестве кода? Это значительный запах кода - если пользователям когда-либо разрешалось устанавливать свои собственные пароли, это можно было бы использовать как произвольную уязвимость при введении команд. –
BTW, см. Http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html для соглашений POSIX об именах переменных среды (и, следовательно, имена переменных оболочки, которые используют пространство имен) - имена всех шапок используемые переменными со значением для оболочки или операционной системы, а имена с хотя бы одним строчным символом зарезервированы для использования приложения; таким образом, рассмотрите 'password' вместо' PASSWORD', чтобы избежать перезаписи переменной со значением в ОС по ошибке. –
@CharlesDuffy - Я знаю, это результат часа шатания в невежестве! Im пытается стать лучше – Detnon