我试图让非管理员用户在需要root权限的共享环境中运行脚本。我打算构建一个AppleScript或Automator应用程序来调用期望以传递登录凭据(是的,我知道危险,它将全部只能执行)。然而,我得到的登录工作,但我试图运行的shell脚本似乎并没有执行,因为它立即返回。我是新的期望,我相信我的脚本中有一个错误。想法任何人?使用期望在OS X上运行shell脚本作为管理员
#!/usr/bin/expect
set timeout 60
set password "MyPass"
set command "bash /Applications/mampstack-5.4.36-0/ctlscript.sh start"
eval spawn login admin
expect "assword:"
send "$password\n"
expect "$"
send "$command\n"
expect "$"
send exit
expect "$"
send exit
期望真的不是这份工作的正确工具。如果你有root用户,你可以在'/ etc/sudoers'中放入一行,以允许用户根据需要运行这个脚本,而不需要任何密码。否则,您将以纯文本形式向全世界公开您的密码,除非您跳过单独的特权升级箍环以防止用户阅读脚本文本。 – 2015-02-23 20:22:22
如果你真的想要一个期望的答案,也期望脚本使用TCL语法,而不是bash语法,所以这应该被标记'tcl',而不是'bash'。 – 2015-02-23 22:08:24
...但是作为一般规则,以一种完全不需要密码的方式进行操作总是比自动输入密码更好。 – 2015-02-23 22:14:40