将密码传递给Automator应用程序


9

我已经用以下外壳脚本编写了一个Automator应用程序,以在系统上打开FTP连接:

sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist
osascript -e 'tell app "Finder" to display alert "SFTP Opened"'

sudo命令需要密码外,这完全可以按预期工作。在终端上运行相同的命令时,它会提示我输入密码,但以Automator应用程序运行时,不会提示我输入任何内容。无论如何,是否有办法在Automator脚本中以编程方式将密码传递给此sudo?我知道这不是安全的做法,但我仍然想这样做,因为我的系统相当安全,除我之外其他任何人都不会碰。

“执行具有管理员权限的shell脚本...”方法出现以下错误:

在此处输入图片说明

Answers:


10

AppleScript应该允许您使用with administrator privileges以下命令执行此操作:

osascript -e 'do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges'

这不会传递密码,但是会使用标准的OS X提示符进行提示:

您可以通过以下两种方式之一在Automator工作流程中使用它:


1
@Amit osascript是bash的:)如果你在的AppleScript的Automator动作要纯的AppleScript,删除这样的osascript: do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges待办事项从这张照片下列之一
广电运通

1
是的,这就像魅力一样!谢谢您的耐心...对不起我!
TheLearner 2014年

2

期望

你也可以使用一个工具,如预期脚本与交互sudoexpect专为这种情况而设计。

期望-与交互式程序进行编程对话

以下shell脚本可能足以满足您的两个命令:

#!/usr/bin/expect -f
spawn sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist
send "my-secret-password\n"

AppleScript并具有管理员权限

另一种方法是使用AppleScript的do shell脚本命令。该命令提供了一个具有管理员特权的选项。Apple的2065技术注释详细介绍了shell脚本。

回声

解决此问题的其他常用方法包括使用echo密码sudo通过管道传递密码。这个StackOverflow答案讨论了这种方法和其他相关方法,如何为在bash中提示输入密码的命令提供密码?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.