2011-04-22 2 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 

업데이트 : 터미널을 통해 스크립트를 실행하는 경우, 그것은 처음 성공하고 나서 종료하고 터미널을 다시 시작할 때까지 아래의 오류를 반환; 때문에 신비 오류로 및 키 체인 스크립팅이 일반적으로 버그를 보인다, 내가 MacRuby를 사용하기로 결정 :

/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() 

UPDATE 2 : 및

오류가 간헐적으로 반환 ... 반복합니다. 차라리 스크립팅을 통해가는 것보다, 직접 Keychain Services를 호출하는 MacRuby Keychain Wrapper 라이브러리를 발견

require 'keychain-wrapper/keychain' 
MRKeychain::GenericItem.item_for_service(service_name).password 
  • 쉬운
  • 보다 효율적인
  • 작품은 완벽하게

완료.

답변

0

저는 Ruby를 사용하지 않았지만 파이썬을 사용 했으므로 아무런 문제가 없습니다. 정기적 인 AppleScript를 사용하여 키 체인 스크립팅에 액세스 할 수 있는지 확인하려고합니다. 그렇지 않다면 Mac을 재부팅하십시오. 그러나 이것은 Appscript보다 컴퓨터의 문제와 더 비슷합니다.

+0

당신은 성공적으로 키 체인을 파이썬으로 스크립팅 했습니까? AppleScript 편집기에서 AppleScript로 잘 작동했습니다. Ruby로 번역하기 전에 프로토 타입을 제작했습니다. –

+0

예 - 저는 Python 및 Appscript로 작은 테스트를 실시했습니다. ASTranslate를 사용하여 검사를 클릭하여 실제 이벤트를 응용 프로그램에 보내십시오. 죄송합니다. Ruby를 직접 도울 수 없습니다. 나는 파이썬 사람이고 Ruby를 모른다. – Clark

+0

Python 스크립트는 어떻게 실행 했습니까? 터미널에서 실행했을 때도 똑같은 일이 발생했습니다.

 $python >>>from appscript import * >>>app('Keychain Scripting').keychains['login.keychain'].keys[its.name == 'name'].password.get() 

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" 작품 잘.

관련 문제