我在我的 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...
但是我在没有 root 权限的情况下创建了我的 crobtab 作业。我怎样才能摆脱这些错误?Ubuntu 18.04.3 LTS (gdm3)
简单的答案是“你不能”。
secret-tool
使用该$DISPLAY
变量查找 GUI 以显示内容。运行时
cron
,没有 GUI。可以将
$DISPLAY
变量从 GUI 环境复制到 cronjob(并读取man xhost
),但这会使secret-tool
' 的提示出现在您的屏幕上,这违背了cron
.此外,由于
secret-tool
处理身份验证,它可能会检测并禁止这种情况,或者可能需要其他环境变量。