好吧,由于我不会深入的原因(因为它们相当愚蠢),我需要制作一个 shell 脚本,每隔 10 秒在 OS X 上启用 SSH。是的,我知道这听起来很愚蠢/毫无意义,但这是有原因的。
只是为了澄清,我知道 root 密码(我可以login root
在终端中成功),但脚本将在非管理员用户登录时运行。
该脚本将在标准(非管理员)帐户上作为启动代理运行,并且需要以某种方式将自身提升为 root(我碰巧知道其密码)以便启用 SSH。
我试过使用expect
,但无济于事(它只是拒绝在 OS X 上工作),而且似乎在 Bash 脚本中传递密码的唯一其他选择是使用echo $pass | sudo -S $command
,但它只是一个标准用户试图sudo
,它不起作用。
我已经尝试过echo $pass | sudo -S login root
、echo "1234" | sudo -S su root
和echo "1234" | sudo -S su
,但它们都只是返回“抱歉,请再试一次。”,即使它正在回显正确的密码,而且我知道,因为我可以成功login root
。
无论如何,我想我的问题是,我如何向 Bash 指定我想要作为sudo
root,而不是运行脚本的当前标准帐户。或者,我如何编写一个脚本,当它在普通用户下运行时,将自己提升为 root 或至少是一个管理帐户,而无需用户输入;当然,假设我知道 root 的密码。
我知道这个场景听起来真的是“为什么你需要一个脚本来做到这一点”,但请帮助我;我将不胜感激。这是我当前的非工作代码。
$pass
?是根密码还是运行脚本的用户密码?因为sudo
需要用户密码,而不是 root 密码。