我有“oneshot”类型的 Systemd 服务,由 Udev 在设备插入时启动。服务正在以 root 身份启动 shell 脚本。该脚本需要用户输入才能按预期完成其工作。用户登录到 GUI 会话(暂时是 Xorg,但不是强制性的)。
以 root 身份运行的进程如何向运行 GUI 会话的常规当前活动用户请求输入?如果是敏感数据或非敏感数据怎么办?如果是的话呢不是奥格?
将数据放入变量的一种方法是脚本的以下部分:
#!/bin/bash
while read session_id login ; do
if [ "$( loginctl show-session -p State "${session_id}" )" == "State=active" ]
then
break
fi
done <<< "$( loginctl list-sessions --no-legend | awk '{print $1 " " $3}' )"
if [ -n "${login}" ] ; then
string="$( DISPLAY=:0.0 \
XAUTHORITY="/home/${login}/.Xauthority" \
zenity --entry )"
else
echo "WARNING:${0}: Do nothing as no one logged in."
exit
fi
但例如,它需要对 DISPLAY 进行复杂的评估。而且只有 Xorg 吗?
使用 Linux 常规工具实现此目的的最佳方法是什么?
谢谢你!