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

标签 macos keychain launchd

我有一个 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/>

归功于:

关于macos - Launchd 无法访问 Mac OS 钥匙串(keychain),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47582989/

相关文章:

android - 从 cli OS X (10.7.3) 启动 ddms 时出现错误 : "Failed to get the adb version...."

OSX 上的 Java 声音不支持 Port.Info 类型

macos - shell 脚本 - 创建文件夹结构

macos - 从 Mac OS X 中的 Bash 访问当前用户的电子邮件和名称

ios - 将 .p12 证书存储在钥匙串(keychain)中以备后用

ios - 钥匙串(keychain):项目报告为 errSecItemNotFound,但在添加时收到 errSecDuplicateItem

macos - 如何从 NSApplication 运行 launchd 代理/守护进程?

ios - 如何在 "Keychain"中保存值数组

objective-c - 我的应用程序应该在哪个文件夹中写入其 launchd 文件?

ios - StartInterval 键如何影响启动的守护进程