【发布时间】:2019-06-29 17:32:01
【问题描述】:
当我在 bash 脚本中使用 expect interact 手动请求 root 密码时,它会接受密码,提升为 root 用户,但未完成bash 脚本的其余部分。
我正在将用户从旧的 CentOS 机器迁移到新的 RHEL 机器。我有一个手动执行此操作的过程,但我正在尝试自动化该过程。我有大部分工作,但有几个步骤需要根级别的权限。我正在尝试使用 bash 脚本中的 expect 交互来执行 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 身份登录,它永远不会执行提升功能并且我得到“脚本完成”响应。如果我以任何其他用户身份登录,则执行提升功能,我手动输入 root 密码,脚本退出而不提供“脚本完成”响应,但我仍然以根用户。
【问题讨论】:
-
eval命令在这里没有添加任何好处,您可以将其删除。