macos - Launchd 无法访问 Mac OS 钥匙串(keychain)

我有一个 python 脚本,由于某种原因(这里不重要),我正在通过 shell 脚本执行它。在我的脚本中,我基本上是在获取一些 url 内容并将电子邮件发送给特定的人。我已经使用类似这样的方法为此添加了安全钥匙串(keychain) security 添加通用密码 -s SMTP -a USERID -w PASSWORD

当从命令行运行时,系统提示我授予对 “安全”命令的钥匙串(keychain)项目。授予后 通过钥匙串(keychain)访问访问我可以运行脚本但它不再 提示检索密码,它确实会给我发送电子邮件。

但是 Cron Job 和 Launchd 没有给我想要的输出。在谷歌搜索了一下后,我发现 cronjob 无法访问钥匙串(keychain),如果我想让它达到目的,我需要在作为 cron 作业运行时提供密码。我不太确定 launchd 是否可以访问钥匙串(keychain)。对于 Ruby,它似乎对下面的人有用。 https://lists.macosforge.org/pipermail/launchd-dev/2008-August/000363.html

我和那个人有同样的问题。从 launchctl 调用时,我没有收到任何电子邮件。但是,如果我在代码中硬编码密码,我会在指定时间收到电子邮件。所以我假设我的问题是 launchd 无法读取的钥匙串(keychain)。有没有办法将钥匙串(keychain)访问权限授予 launchd? 我的 com.Query.plist 文件在 $HOME/Library/LaunchAgents 目录中。

最佳答案

我今天也遇到了这个。

它似乎没有很好的记录,但如果您将以下内容添加到您的 plist 中,您的应用程序将能够在作为 LaunchAgent 运行时看到用户钥匙串(keychain):

<key>SessionCreate</key>
<true/>

归功于:

  • Missing certificates and keys in the keychain while using Jenkins/Hudson as Continuous Integration for iOS and Mac development
  • https://serverfault.com/questions/328785/how-do-i-launch-a-process-as-a-specific-user-at-startup-on-os-x/

https://stackoverflow.com/questions/47582989/

相关文章:

qt - Qt如何隐藏状态栏

angular - 如何使用 Angular5 检查表单控件的变化

reactjs - 如何修复输入复选框需要双击才能使样式为 'check' ed(React/JSX

html - 有没有办法修复 Outlook 2016 上的 HTML 电子邮件宽度?

prolog - swi-prolog 中的不相等操作

php - 最小年龄验证 laravel

scala - 创建一个 bool 特征来检查两列是否相同

svg - 使用 textLength 属性

ms-access - MS Access 多控制按键 CTRL+A Handler

python - 如何在终端 Mac 上使用 python 3