2011-08-14 97 views
1

我需要使用sudo執行一個命令,並希望顯示一個對話窗口供用戶輸入他們的憑證。嘗試使用Applescript自定義提示已經毫無意義,並且使用內置的「具有管理員權限的do shell腳本」不允許自定義窗口,以便用戶知道請求來自哪裏。使用sudo時提示用戶使用對話窗口輸入密碼

當然,還有就是顯示一個窗口的方式,讓用戶輸入他們的憑證和值發送回sudo來執行命令? cocoasudo看起來很有前途,但它也在我需要用我的應用程序的名稱替換的提示窗口中寫入「cocoasudo」。有沒有人找到了實現這種功能的解決方案?

回答

4

構建自定義窗口超出了基本的applescript範圍。如果你想這樣做,你需要擴展你的編程技能。您需要學習如何利用Apple提供的用於創建窗口等的工具。底線是您需要學習AppleScriptObjC或Objective-C/Cocoa API以及如何在Xcode中使用它們。

就是這樣說的,如果你不是在學習新東西,那麼就使用你有的工具。像這樣的東西會奏效。您可以自定義圖標,按鈕,文本等,甚至可以隱藏答案以在輸入密碼時保護用戶。有很多,你可以使用AppleScript做沒有進一步學習...

display dialog "OSAScript will need an Admin User name and password in order to make your changes." & return & return & "Please enter an admin username." default answer "" with icon 2 
set username to text returned of result 

display dialog "OSAScript will need an Admin User name and password in order to make your changes." & return & return & "Please enter an admin password." default answer "" with icon 2 with hidden answer 
set pssword to text returned of result 

do shell script "osascript -e \"return 1\"" user name username password pssword with administrator privileges 
+0

這不是關於擴展編程技巧,而是找到一個簡單的解決方案,我期望的是一個常見的用例。恕我直言「基本applescript」,因爲你稱它應該提供一個API來調出一個窗口,因爲我已經描述了不需要在C,Cocoa,ObjC等中一起破解它。 – braitsch

+0

很好,你知道基本的蘋果應該是什麼樣的不應該這樣做。但底線不是,但是你已經提供了使用其他工具做你想做的事情的能力。 – regulus6633

1

此外,考慮到一旦你使用sudo進行身份驗證,您不必再爲接下來的五分鐘提供密碼。這並不能直接解決您的問題,但它爲您與用戶交互的方式提供了更多選擇。 sudo的-n選項阻止它提示輸入密碼(命令運行,或者sudo退出並顯示錯誤)。

您可以將-n與-A選項結合使用,這會導致sudo運行一個單獨的程序,其唯一的作業是收集和輸出密碼。這會讓你使用AppleScript來更好地做你想做的事嗎?

+0

這是完全正確的感謝,但是這並沒有解決我的問題,就像我上面解釋的那樣,如何調出一個對話窗口。 – braitsch

0

如果您熟悉Javascript,則可以使用sudo-prompt模塊爲Node運行使用sudo的命令,並在必要時使用對話窗口提示。該對話框是由操作系統引發的本地提示,以便用戶的密碼不會暴露給您的應用程序。您也可以在macOS上提供應用程序的名稱和圖標。該模塊也適用於Windows和Linux。

相關問題