【问题标题】:MAC OS - AppleScript - How to make it show username and password dialog once?MAC OS - AppleScript - 如何让它显示用户名和密码对话框一次?
【发布时间】:2014-05-09 00:16:08
【问题描述】:

您好,

在我的 AppleScript 中,我正在运行以下代码,

do shell script "sudo networksetup -setproxybypassdomains Ethernet *.local, 169.254/16"
do shell script "sudo networksetup -setwebproxy Ethernet 127.0.0.1 8888"
do shell script "sudo networksetup -setsecurewebproxy Ethernet 127.0.0.1 8888"

但是,它每次都要求输入密码。我的意思是当脚本打开时,它会为每行进程询问 3 次密码。为了防止询问密码,我必须在终端中输入以下内容,

sudo chmod u+s /usr/sbin/networksetup

当按下 Enter 键时,它会要求输入密码,一旦输入并运行 AppleScript,它就不再要求输入密码(3 次)。

但用户必须前往终端并输入上述命令。为了防止这种情况,我在 AppleScript 中使用了以下代码,

do shell script "sudo chmod u+s /usr/sbin/networksetup"

所以用户运行 AppleScript,它会自动设置。但我收到以下错误消息,

如何更改 AppleScript,

do shell script "sudo chmod u+s /usr/sbin/networksetup"

...让它要求输入一次密码,然后执行其余的“...do shell script...”部分而不要求输入密码。或者在上面的代码行中加上密码来让它工作?

【问题讨论】:

    标签: macos shell applescript sudo


    【解决方案1】:

    你看过“do shell script”命令的定义吗?您不要在该命令中使用 sudo。您可以使用“具有管理员权限”,并且可以根据需要提供“用户名”和“密码”。

    执行此操作...打开 AppleScript 编辑器。在文件菜单下选择“打开字典”。从对话窗口中选择 StandardAdditions.osax。在字典的搜索字段中搜索“do shell script”以查看您可以使用该命令执行的所有操作。

    例如,您可以按照以下方式使用它。祝你好运。

    do shell script "networksetup -setproxybypassdomains Ethernet *.local, 169.254/16" with administrator privileges
    

    【讨论】:

    • +1,但您选择的示例命令正是在使用您的正确方法时不需要(出于安全原因不应使用)的命令。
    • 我会测试一下。谢谢
    • 同意 mklement0... 我更改了示例。我并没有真正关注示例代码实际上在做什么!
    • 我没有机会检查这个,因为我正在处理的程序很复杂,需要在两者之间添加。但是这周会检查。谢谢。看起来您的解决方案将是正确的“regulus6633”。
    【解决方案2】:

    您可以将密码作为参数传递给sudo。从手册页:

    -S          The -S (stdin) option causes sudo to read the password from
                       the standard input instead of the terminal device.  The
                       password must be followed by a newline character.
    

    【讨论】:

    • 我也会对此进行测试。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 2021-03-22
    相关资源
    最近更新 更多