0

シェル スクリプトを実行する単純な AppleScript (アプリケーション) があります。

do shell script "sudo killall -TERM java"

「 sudo no tty present and no askpass program specified 」で失敗します。

ここで望ましい動作は、OS X のパスワード ダイアログを開くことです(うまくいけば、将来の使用のためにキーチェーンに保存するためのオファーが表示されます) が、(推測では) スクリプトに必要な " asker" (驚くべきことに、デフォルトでは発生しません)。

試してみました

do shell script "ssh-askpass Sudo Password | sudo killall -TERM java"

しかし、それでもエラーが発生します。

AppleScript から OS X パスワード ダイヤリングを呼び出す正しい方法は何ですか?

4

1 に答える 1

4

実際、推奨される方法は次のとおりです。

do shell script "sudo killall -TERM java" with administrator privileges

ご指摘のとおり、これではキーチェーンのパスワードを記憶できません。これは意図的なものです。キーチェーンは、サービスなどのパスワードを記憶する必要をなくすことを目的としており、ローカル セキュリティ ポリシーを無効にすることを目的としています (これは本質的にあなたがやろうとしていることです.

securityコマンドを使用してパスワードを保存および取得することで、パスワードを偽造できる場合があります ( MacScripterの説明とサンプル コードを参照してください)。Tell application "System Events" to display dialog "Password:" default answer "" with hidden answer「キーチェーンに記憶する」チェックボックスを追加する方法はわかりませんが、でパスワードの入力を求めることができます。他のスクリプトにも同様のアクセスを許可せずに、ユーザーに確認を求めずにスクリプトがアクセスできるようにするセキュリティポリシーを作成する方法はないと思うため、これによりいくつかのセキュリティの問題も発生します。

于 2012-07-13T18:49:38.160 に答える