6

Gmailアカウント(Mail.appのIMAPで構成されておらず、POPのみで構成されている)で特定の操作を(python imaplibを介して...)実行するapplescriptをセットアップしようとしています。

そのために、スクリプトは私のパスワードを使用してログインする必要があります。セキュリティ上の考慮事項がない場合は、パスワードを python スクリプトにハードコードするだけで済みます...

Mail.app 内で (たとえば、ルールによって) トリガーされたそのような AppleScript が、キーチェーン内に保存されているパスワードを使用できる方法はありますか?

4

4 に答える 4

7

以下は、スクリプト ライブラリのスクリプトからコピーされたものです...

-- スクリプトでパスワードを使用する必要がある場合は、キーチェーンを使用してパスワードを保存し、スクリプトにパスワードを取得させることができます。この方法では、パスワードをスクリプトに平文で保存する必要がないため、パスワードが保護されます。

-- パスワード項目の作成 - Keychain Access アプリケーションを開き、左側の列でキーチェーンを選択します。次に、[ファイル] > [新しいパスワード項目...] をクリックし、名前を付けて、アカウントの短い名前をアカウントに入力し、パスワードを入力します。パスワードリストでそれを強調表示し、それに関する情報を取得します。[属性] ボタンの下に、その種類を汎用キーとして入力します。これが選択されたのは、それらの数が少なく、検索がはるかに高速であるためです。

-- 注: 10.7 では、Apple はキーチェーン スクリプトを削除したため、セキュリティ コマンド ライン ツールを使用するようになりました。

getPW("name of keychain item")

on getPW(keychainItemName)
    do shell script "security 2>&1 >/dev/null find-generic-password -gl " & quoted form of keychainItemName & " | awk '{print $2}'"
    return (text 2 thru -2 of result)
end getPW
于 2012-05-13T20:33:16.427 に答える
2

そのような方法があり、それはKeychain Access Scriptingと呼ばれ、Apple は OS X 10.7 でそれを廃止し、AppleScript から必要な拡張機能を削除しました。ただし、 TextMate ブログで詳しく説明されているsecurityようなシェル ユーティリティを使用することもできます(コメントを必ず読んでください。これにはいくつかの落とし穴があります)。または、Apple のコンポーネントのサード パーティ製の代替品を使用することをお勧めします。 Daniel Jalkut の優れたUsable Keychain Scriptingアプリ。インストールが完了すると、次の AppleScript によってパスワードが取得されます (アカウント名が「GMail」であると仮定します)。

tell application "Usable Keychain Scripting" to get password of first generic item of current keychain whose account is "GMail"
于 2012-05-13T20:40:03.343 に答える
0

私はこれを使ってます

# Replace %ACCOUNT_NAME% with account name of Keychain item
get_pw () {
  security 2>&1 >/dev/null find-generic-password -ga "%ACCOUNT_NAME%" \
  | sed 's/password: "\(.*\)"/\1/'
}
PASS=$(get_pw)
于 2014-10-16T16:22:03.193 に答える
0

これは以前は利用できなかったと思うので、更新された回答です。出力を解析する必要なく、パスワードのみを出力securityするオプションが追加されました。-w

これにより、Pythonで次のソリューションが得られます。

pw = subprocess.check_output(["security", "find-generic-password", "-wl", "MY_KEYCHAIN_ID"])

これにより、他のソリューションと同じように、ユーザー パスワードのプロンプトが引き続き表示されます。

于 2020-04-14T13:34:33.797 に答える