我有一个shell脚本,可以在/ etc / hosts中添加一行。如果我用sudo手动运行它,它可以正常工作。我想将此文件分发给使用Mac的同事。但是,当shell脚本正常运行时,我得到一个:
sed: /etc/hosts: Permission denied
有没有办法强制bash脚本提示输入密码,因为编译过的ObjC代码可以做什么?如果Bash不能这样做,Applescript可以这样做吗?
答案 0 :(得分:3)
Adayzdone的答案是使用“具有管理员权限”的正确方法
但您不需要硬编码密码或创建自己的对话框。
如果您不包含用户名和密码,系统会提示您输入管理员的标准用户名和密码对话框。
do shell script "echo hi" with administrator privileges
答案 1 :(得分:2)
你的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
答案 2 :(得分:2)
使用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