Когда я использую ожидаю взаимодействия внутри bash-скрипта, чтобы вручную запросить пароль root, он принимает пароль, поднимает пользователя root, но завершает работу, не завершив остальную частьсценарий bash.
Я переношу пользователей со старых машин CentOS на новые машины RHEL.У меня есть процесс для этого вручную, но я пытаюсь автоматизировать процесс.У меня большая часть этого работает, но для нескольких шагов требуются права root-уровня.Я пытаюсь использовать функцию ожидаемого взаимодействия из скрипта bash для выполнения команды su , чтобы гарантировать, что пароль root остается безопасным.
#!/bin/bash
elevate()
{
echo
echo "You must be logged in as root to continue."
echo "Press [Enter] to login as root."
/usr/bin/expect -c 'expect "\n" { eval spawn su; interact }'
}
User=`whoami`
if [ $User != "root" ]
then
elevate
fi
echo "script completed"
exit
Если я вошел в системуКогда я запускаю сценарий в качестве пользователя root, он никогда не выполняет функцию повышения, и я получаю ответ « script complete ».Если я вошел в систему как любой другой пользователь, функция elevate выполняется, я вручную ввожу пароль root, и сценарий завершается без предоставления ответа « script complete », но я все еще вошел в систему как rootпользователь.