0

ドキュメントに従って、次のように書きました。

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
  • 簡単
  • もっと効率的
  • 完璧に動作します

終わり。

4

2 に答える 2

0

同じエラーが発生しますが、認証が必要なものだけです:


kc = app("Keychain Scripting").keychains["login.keychain"]
p kc.keys[its.name.eq("loginwindow")].name.get
# ["loginwindow"]
p kc.keys[its.name.eq("loginwindow")].password.get
# ... Application isn't running ...

tell app "Keychain Scripting" to password of keys of keychain "login.keychain" where name is "loginwindow"うまく動作します。

于 2011-04-27T11:07:15.610 に答える
0

Ruby は使用しませんでしたが、Python を使用しましたが、問題はありません。通常の Applescript を実行して、キーチェーン スクリプトにアクセスできるかどうかを確認します。そうでない場合は、Mac を再起動してみてください。しかし、これは Appscript よりもコンピュータの問題のように思えます。

于 2011-04-22T21:54:28.910 に答える