Я следовал за документами и писал:
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
- Easy
- Более эффективный
- Работает без нареканий
Готово.