我在我的 bash 脚本中使用了这个命令。
somePassw=$(/usr/bin/secret-tool lookup some-login $someLogin 2>secret-tool.log)
它在命令行中运行良好。但如果从 crontab 运行该脚本,我会在日志中看到以下消息:
secret-tool.log:
(secret-tool:6289): GLib-GObject-CRITICAL **: 15:02:01.285: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
secret-tool: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
如果我输入,我在终端中会看到相同的错误,sudo -E secret-tool lookup...
但我创建 crobtab 作业时没有 root 权限。我该如何摆脱这些错误?Ubuntu 18.04.3 LTS (gdm3)
答案1
简单的回答是“你不能”。
secret-tool
使用$DISPLAY
变量来查找 GUI 来显示内容。
运行时cron
,没有 GUI。
一可以将变量从 GUI 环境复制$DISPLAY
到 cronjob(并读取man xhost
),但这会使secret-tool
的提示出现在您的屏幕上,从而违背了的目的cron
。
此外,由于它secret-tool
涉及身份验证,因此可能检测并禁止这种情况,或者可能需要其他环境变量。