2013-03-25 47 views
0

我有一個shell腳本,將一行添加到/ etc/hosts。如果我用sudo手動運行它,它會正常工作。我想將此文件分發給使用Mac的同事。然而,當shell腳本運行正常,我得到一個:從OS X中的bash腳本中,是否可以提示輸入管理員權限?

sed: /etc/hosts: Permission denied 

有沒有辦法強制bash腳本提示輸入密碼,編譯ObjC代碼可以做什麼?如果Bash不能這樣做,Applescript可以這樣做嗎?

+1

難道你不能把它稱爲'sudo sed ...'腳本嗎? – 2013-03-25 21:00:21

+0

它不是從Terminal.app/Contents/MacOS目錄中的終端運行的,而是應用程序。所以不,它不能。 – 2013-03-25 21:01:31

+1

有一個相當於你可以嘗試的'gksudo'叫做cocoasudo。 – 2013-03-25 21:02:47

回答

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

可能最好不要嵌入憑證 – 2013-03-25 21:13:22

+0

同意,我只是說明命令。 – adayzdone 2013-03-25 21:19:20

3

Adayzdone的答案是正確的方式來使用「以管理員權限」

但是,您不需要硬編碼密碼或創建自己的對話框。

如果您不包含用戶名和密碼,系統會提示您使用管理員的標準用戶名和密碼對話框。

do shell script "echo hi" with administrator privileges 
相關問題