ドキュメントに従って、次のように書きました。
require 'rubygems'
require 'appscript'
loginKeychain = Appscript::app('Keychain Scripting').keychains['login.keychain']
userName = loginKeychain.keys[its.name.eq(name)].password.get
更新:ターミナル経由でスクリプトを実行すると、最初は成功し、ターミナルを終了して再起動するまで以下のエラーが返されます。繰り返します...
断続的に返されるエラー:
/Library/Ruby/Gems/1.8/gems/rb-appscript-0.5.3/lib/appscript.rb:539:in `_send_command': CommandError (Appscript::CommandError)
OSERROR: -600
MESSAGE: Application isn't running.
COMMAND: app("/System/Library/ScriptingAdditions/Keychain Scripting.app").keychains["login.keychain"].keys[its.name.eq("a name")].password.get()
更新 2:不可解なエラーと、キーチェーン スクリプトは一般的にバグがあるように思われるため、MacRubyを使用することにしました。スクリプトを使用するのではなく、キーチェーン サービスを直接呼び出すMacRuby Keychain Wrapperライブラリを見つけました。
require 'keychain-wrapper/keychain'
MRKeychain::GenericItem.item_for_service(service_name).password
- 簡単
- もっと効率的
- 完璧に動作します
終わり。