4

我有一个向 /etc/hosts 添加一行的 shell 脚本。如果我使用 sudo 手动运行它,它可以正常工作。我想将此文件分发给使用 Mac 的同事。但是,当 shell 脚本正常运行时,我得到:

sed: /etc/hosts: Permission denied

有没有办法像编译的 ObjC 代码那样强制 bash 脚本提示输入密码?如果 Bash 不能这样做,Applescript 可以这样做吗?

4

3 回答 3

4

Adayzdone 的回答是使用“具有管理员权限”的正确方法

但是您不需要硬编码密码或创建自己的对话框。

如果您不包括用户名和密码,系统将提示您使用管理员的标准用户名和密码对话。

do shell script "echo hi" with administrator privileges
于 2013-03-27T00:43:00.493 回答
3

你的 shell 脚本可以调用 sudo,它会在终端询问密码。

试试http://www.performantdesign.com/2009/10/26/cocoasudo-a-graphical-cocoa-based-alternative-to-sudo/

#!/usr/bin/env bash

if [ "$SUDO_USER" ]
then
  sed `do stuff`
else    
 cocoasudo --prompt="Please authenticate" bash -l -c "/path/to/this/script"
fi
于 2013-03-25T21:00:24.353 回答
3

使用 Applescript:

property usr : "username"
property pswd : "password"

do shell script "echo hi" user name usr password pswd with administrator privileges

或者,如果您不想硬编码密码:

set usr to text returned of (display dialog "Enter username" default answer "my username")
set pswd to text returned of (display dialog "Enter password…" default answer "my password")

do shell script "echo hi" user name usr password pswd with administrator privileges
于 2013-03-25T21:11:51.997 回答