我有两个脚本都需要使用 gpg-agent 解密密码。从终端启动时,它们都运行良好。问题是,当通过 cron 运行时,它们都会失败并显示以下消息:
gpg: problem with the agent: End of file
gpg: decryption failed: No secret key
我有这个/etc/profile.d/gpg-agent.sh
:
if [ $EUID -ne 0 ] ; then
envfile="$HOME/.gnupg/gpg-agent.env"
if [[ -e "$envfile" ]] && kill -0 $(grep GPG_AGENT_INFO "$envfile" | cut -d: -f 2) 2>/dev/null; then
eval "$(cat "$envfile")"
else
eval "$(gpg-agent --daemon --enable-ssh-support --write-env-file "$envfile")"
fi
export GPG_AGENT_INFO # the env file does not contain the export statement
export SSH_AUTH_SOCK # enable gpg-agent for ssh
fi
我可以验证代理是否正在运行:
% pgrep gpg-agent
510
cron 任务在我自己的 crontab 中。我尝试过执行这样的脚本:
*/30 * * * * source /home/user/.gnupg/gpg-agent.env && export GPG_AGENT_INFO && /script
但我尝试过的都不起作用。