2013-03-25 2 views
0

/etc/hosts에 줄을 추가하는 쉘 스크립트가 있습니다. sudo를 사용하여 수동으로 실행하면 제대로 작동합니다. Mac을 사용하는 동료에게이 파일을 배포하고 싶습니다. 컴파일 ObjC 코드가 할 수있는, 암호를 요청하는 bash는 스크립트를 강제 할 수있는 방법이 있나요OS X의 bash 스크립트에서 관리자 권한을 요청할 수 있습니까?

sed: /etc/hosts: Permission denied 

: 쉘 스크립트가 정상적으로 실행 그러나, 나는거야? Bash가이 작업을 수행 할 수 없다면 Applescript가 그렇게 할 수 있습니까?

+1

스크립트에서 'sudo sed ...'로 부를 수 없습니까? –

+0

터미널에서 실행되지 않습니다. folder.app/Contents/MacOS 디렉토리 안에 app-ified가 있습니다. 그래서 아닙니다. –

+1

시도 할 수있는 cocoasudo라는 'gksudo'와 동일한 기능이 있습니다. –

답변

2

쉘 스크립트는 터미널에서 암호를 묻는 sudo를 호출 할 수 있습니다.

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

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

을 또는 당신은 하드 코드에 암호를 원하지 않는 경우 :

은 AppleScript를 함께 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

을 시도

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 
+0

아마도 자격 증명을 포함시키지 않는 것이 가장 좋습니다. –

+0

동의, 나는 그 명령을 설명하고있었습니다. – adayzdone

3

Adayzdone의 대답은 올바른 방법으로는 "관리자 권한으로 사용"

하지만 암호를 하드 코드하거나 자신 만의 대화 상자를 만들 필요가 없습니다.

사용자 이름과 암호를 입력하지 않으면 관리자의 표준 사용자 이름 및 암호 대화 상자가 나타납니다.

do shell script "echo hi" with administrator privileges 
관련 문제