2011-08-14 13 views
1

sudoでコマンドを実行する必要があり、ユーザーが資格情報を入力するためのダイアログウィンドウを表示する必要があります。 Applescriptを使ってプロンプトをカスタマイズしようとする試みはそれほど簡単ではありませんでした。組み込みの「管理者権限を持つシェルスクリプトを実行する」では、ウィンドウをカスタマイズすることができないため、ユーザーは要求の出所を知ることができます。sudoを使用してダイアログウィンドウでパスワードを入力する

確かに、ユーザーは自分の資格情報を入力し、コマンドを実行するためにsudoに戻って値を送信している、ウィンドウを表示する方法はありますか? cocoasudoは有望に見えますが、プロンプトウィンドウに "cocoasudo"と書いてありますので、アプリケーションの名前に置き換える必要があります。誰もこの種の機能を実装するためのソリューションを見つけましたか?

答えて

4

カスタムウィンドウの作成は、基本的なAppleScriptの範囲を超えています。あなたが望むなら、プログラミングスキルを広げる必要があります。 Windowsなどの作成に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

これはプログラミングの技術を拡張することではなく、一般的な使用例であると予想される単純な解決策を見つけることです。 IMHOの「基本的なアプリケーション」は、C、Cocoa、ObjCなどで一緒にハッキングする必要があると記述したように、ウィンドウを表示するAPIを提供する必要があります。 – braitsch

+0

基本的なAppleScriptは、してはいけません。要するに、そうではありませんが、他のツールを使ってあなたが望むことをする能力が提供されています。 – regulus6633

1

があります、あなたは、sudoで認証されると、あなたは次の5分間もう一度パスワードを入力する必要がないことを考えます。それはあなたの問題を直接解決するものではありませんが、ユーザーとのやりとりのためのオプションが増えます。 sudoの-nオプションは、パスワードの入力を要求しないようにします(コマンドが実行されるか、sudoがエラーで終了します)。

-nオプションを-Aオプションと組み合わせて使用​​すると、sudoはパスワードを収集して出力するジョブだけを実行します。あなたが望むものをより良くするためにAppleScriptを使うことができるでしょうか?

+0

それはすべて正しくありがたいですが、それは私が上で説明したようにダイアログウィンドウを表示する方法に関する私の質問に対処しません。 – braitsch

0

JavaScriptに精通している場合は、ノードのsudo-promptモジュールを使用してsudoを使用してコマンドを実行し、必要に応じてダイアログウィンドウを要求することができます。このダイアログは、ユーザーのパスワードがアプリケーションに公開されないように、オペレーティングシステムによって生成されるネイティブプロンプトです。また、macOS上でアプリケーションの名前とアイコンを指定することもできます。このモジュールは、WindowsとLinuxでも動作します。

関連する問題