2

いくつかのスクリプトを実行する自動化アプリケーションを作成しました (GUI は使用しませんが、使用しているため、管理者パスワードの GUI を開いていますwith administrator privileges)。メインスクリプトは次を使用して開始されます

do shell script (quoted form of myCommand) with administrator privileges

このため、アプリケーションを実行すると、グラフィカルな管理者パスワード プロンプトが表示されます。

インストール後に bash 経由でこのアプリケーションを自動的に実行しようとしていますが、GUI パスワード プロンプトをバイパスするにはどうすればよいか疑問に思っています。bash を介してアプリケーションを実行し、サイレント モードで実行する方法を探しています (GUI もパスワード プロンプトもありません)。

with administrator privilegesすべての共通点のために

sudo open -a /Application/appname.app &

sudo osascript -e 'tell app id "com.app.bundleid"' -e activate -e end

root として実行しても、すべて GUI パスワード プロンプトが表示されます。

OSX の bash 経由で GUI パスワード プロンプトを提供するアプリケーションを開く方法はありますか? または、メインスクリプトを実行するよりも良い方法はありdo shell script (quoted form of myCommand) with administrator privilegesますか?

4

3 に答える 3

1

質問へのコメントで、スクリプトにパスワードを入力することがわかりました。これは良い考えではありません。スクリプトでパスワードを使用する必要がある場合は、キーチェーンを使用してパスワードを保存し、スクリプトでパスワードを取得できます。これはパスワードを保存する安全な方法です。パスワードを AppleScript に入れると、クリア テキストで保存されるため、誰でも簡単に削除できるからです。

パスワード項目の作成- Keychain Access アプリケーションを開き、左側の列でキーチェーンを選択します。次に、[ファイル] > [新しいパスワード項目...] をクリックし、名前とアカウント名 (任意の名前) を指定して、パスワードを入力します。必要に応じて、アイテムの「情報を取得」し、種類を「汎用キー」に変更して、他のパスワードと区別することができます。

: アイテムに付けた名前を、コードの passwordItemName 変数に入れる必要があります。

このコードを実行すると、アイテムへのアクセスを許可するかどうかを尋ねるダイアログが表示されます。「常に許可」をクリックすると、今後このダイアログが表示されなくなります。または、キーチェーン項目に関する情報を取得し、アクセス制御タブに移動して、「常にアクセスを許可...」セクションに「セキュリティ」バイナリを追加することで、このダイアログを完全に防ぐことができます。

-- global variables are often saved in a writable applescript
-- so we ensure it's a local variable to prevent this
local pword

set pword to getPW()
do shell script "/path/to/script/file.sh" user name "adminusershortname" password pword with administrator privileges

on getPW()
    set passwordItemName to "ApplescriptAdminPass"
    do shell script "/usr/bin/security find-generic-password -wl " & quoted form of passwordItemName
end getPW
于 2013-09-04T21:35:42.333 に答える
1

補助デバイスへのアクセスが有効になっている場合は、GUI スクリプトを使用してパスワード ダイアログを操作できます。

tell application "System Events" to tell process "SecurityAgent"
    set value of text field 2 of scroll area 1 of group 1 of window 1 to "pa55word"
    click button 2 of group 2 of window 1
end tell
osascript -e 'do shell script "ls ~root" with administrator privileges' &
sleep 1
osascript -e 'tell application "System Events" to tell process "SecurityAgent"
    set value of text field 2 of scroll area 1 of group 1 of window 1 to "pa55word"
    click button 2 of group 2 of window 1
end tell'

通常、たとえばsudo open -a Finder、Finder をルートとして開くことはありませんが、開きsudo /System/Library/CoreServices/Finder.app/Contents/MacOS/Finderます。

于 2013-09-04T18:32:45.300 に答える
0

GUI パスワード プロンプトをバイパスして引き続き使用する方法with administrator privilegesは、Automator アプリを再コンパイルし、ユーザーとパスワードをインラインで提供することでした。

on run {input, parameters}
    set myCommand to POSIX path of ((path to me as string) & "Contents:Resources:script_name.sh")
    do shell script (quoted form of myCommand) user name "local-admin" password "local-adminpassword" with administrator privileges
    return input
end run

これにより、管理者権限で Applescript を実行できますが、GUI パスワード プロンプトは表示されません。その後、アプリは必要に応じてサイレント モードで実行され、スクリプト script_name.sh が実行されます。このスクリプトは、他の多くのスクリプトを実行し、(myapp.app/Contents/Resources/ から) 他のリソース ファイルをシステム ディレクトリなどにコピーします。

記録のために、Munki を使用してこのアプリをデプロイし、postinstall スクリプトを使用してインストール後にサイレント モードで自動的に実行する必要があったため、このように動作させる必要がありました。

#!/bin/bash
open -b "com.company.bundleidformyapp"
exit 0
于 2013-09-04T21:37:28.360 に答える