2011-04-22 64 views
0

我跟着文檔寫道:如何通過rb-appscript編寫鑰匙串腳本?

require 'rubygems' 
require 'appscript' 

loginKeychain = Appscript::app('Keychain Scripting').keychains['login.keychain'] 
userName = loginKeychain.keys[its.name.eq(name)].password.get 

UPDATE:如果我運行通過終端的腳本,它成功的第一時間,然後返回下面,直到我退出並重新啓動終端的錯誤;重複...

錯誤間歇性地返回:

/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庫,它直接調用Keychain Services,而不是通過腳本去:

require 'keychain-wrapper/keychain' 
MRKeychain::GenericItem.item_for_service(service_name).password 
  • 更高效
  • 完美的作品

完成。

回答

0

我沒有使用Ruby,但我用Python和我沒有問題。我會嘗試定期的Applescript,看看它是否可以訪問Keychain腳本。如果沒有,然後嘗試重新啓動您的Mac。但是這聽起來像是你的電腦比Appscript更像一個問題。

+0

您成功使用Python腳本化了Keychain? AppleScript編輯器的AppleScript工作正常 - 在翻譯成Ruby之前,我在那裏對它進行了原型設計。 – 2011-04-23 00:10:06

+0

是啊 - 我用Python&Appscript進行了一個小測試。嘗試使用ASTranslate並單擊檢查將實際事件發送到應用程序。對不起,我不能直接幫助Ruby。我是一個Python人,只是不知道Ruby。 – Clark 2011-04-23 18:03:52

+0

你是如何運行你的Python腳本的?在終端中,當我執行時發生同樣的事情:

 $python >>>from appscript import * >>>app('Keychain Scripting').keychains['login.keychain'].keys[its.name == 'name'].password.get() 
2011-04-24 16:24:21

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"作品就好了。