我正在尝试设置一个应用(通过python imaplib ...)对我的Gmail帐户进行某些操作的AppleScript(在Mail.app中没有配置IMAP,只有POP)。
为此,脚本需要使用我的密码登录。如果不是为了安全考虑,我可以简单地将我的密码硬编码到python脚本中......
有没有办法在Mail.app中触发这样的AppleScript(例如通过规则)可以使用存储在钥匙串中的密码?
答案 0 :(得分:6)
以下内容将从我的脚本库中的脚本中复制出来......
- 如果您需要在脚本中使用密码,可以使用钥匙串存储密码并让脚本检索密码。这样您的密码就会受到保护,因为您不需要在脚本中以明文形式存储密码。
- 创建密码项 - 打开Keychain Access应用程序,然后在左栏中选择钥匙串。然后单击文件>新密码项...,为其命名,将您的帐户短名称记入帐户,然后输入密码。在密码列表中突出显示它并获取有关它的信息。在“属性”按钮下,输入其类型作为通用键。之所以选择它是因为它们并不多,搜索速度也快得多。
- 注意:在10.7 apple中删除了keychain脚本,因此我们现在使用安全命令行工具
getPW("name of keychain item")
on getPW(keychainItemName)
do shell script "security 2>&1 >/dev/null find-generic-password -gl " & quoted form of keychainItemName & " | awk '{print $2}'"
return (text 2 thru -2 of result)
end getPW
答案 1 :(得分:2)
有这样一种方式,它被称为 Keychain Access Scripting ,Apple不推荐使用OS X 10.7,从AppleScript中删除必要的扩展名。 但是,你可以使用像detailed on the TextMate blog这样的security
shell实用程序(请务必阅读评论 - 有一些问题),或者,我会建议使用Apple的组件的第三方替代品,Daniel Jalkut优秀的 Usable Keychain Scripting 应用程序。安装完成后,AppleScript的以下位将检索您的密码(假设帐户名称为“GMail”):
tell application "Usable Keychain Scripting" to get password of first generic item of current keychain whose account is "GMail"
答案 2 :(得分:0)
我正在使用这个
# Replace %ACCOUNT_NAME% with account name of Keychain item
get_pw () {
security 2>&1 >/dev/null find-generic-password -ga "%ACCOUNT_NAME%" \
| sed 's/password: "\(.*\)"/\1/'
}
PASS=$(get_pw)
答案 3 :(得分:0)
一个更新的答案,因为我以前不知道这个答案。 security
现在具有一个-w
选项,该选项仅输出密码,而无需解析输出。
这为我们提供了python解决方案:
pw = subprocess.check_output(["security", "find-generic-password", "-wl", "MY_KEYCHAIN_ID"])
这仍然会触发提示输入用户密码的提示,与其他解决方案相同。