Как сделать скрипт связки ключей через rb-appscript? - PullRequest
0 голосов
/ 22 апреля 2011

Я следовал за документами и писал:

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
  • Более эффективный
  • Работает без нареканий

Готово.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2011

Я получаю ту же ошибку, но только с вещами, требующими аутентификации:


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" отлично работает.

0 голосов
/ 23 апреля 2011

Я не использовал Ruby, но я использовал Python, и у меня нет проблем.Я бы попробовал сделать обычный Applescript и посмотреть, сможет ли он получить доступ к скриптингу брелка.Если нет, попробуйте перезагрузить Mac.Но это больше похоже на проблему вашего компьютера, чем на Appscript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...