我有一台配置了加密家庭的大硬盘电脑。碰巧的是,这台电脑也运行着我家的主要 Kodi 媒体中心。每次我的孩子想看电影时,我都必须打开它,然后将键盘物理连接到它,然后输入密码。
我很希望能够远程完成这件事。
当然,我也有该计算机的根访问权限。
我不愿意创建另一个具有自动登录功能的用户名,因为大多数媒体文件都是加密的,我希望它们保持这种状态。
用于在锁定屏幕上打字的正常组合export DISPLAY=0:
和source discover_session_bus_addres.sh
和xdotool type my_secret_password
在上不起作用lightm
。
答案1
以下是在 Ubuntu 16.04 下有效的答案lightdm
:
- 获得
root
lightdm 的访问权限.Xauthority
,它位于 下/var/lib/lightdm/.Xauthority
。要么将它复制到你可以读取的地方并放弃你的 root 权限,要么保持 root 权限。 - 设置
XAUTHORITY
为指向该文件(例如export XAUTHORITY=/var/lib/lightdm/.Xauthority
) - 设置
DISPLAY
为活动显示 (export DISPLAY=:0
) xdotool
现在应该可以了。尝试xdotool type "My super secret password" xdotool key Return
答案2
以下是我正在使用的解决方法。虽然它很丑陋和粗鲁,但如果自动登录选项有效,这种方法在 Wayland 和 GDM(Ubuntu 17.10)中也有效。
#!/bin/bash
# NAME: lightdm-auto-login
main() {
# If the file '/etc/lightdm/lightdm.conf' exists create a backup copy
[[ -f /etc/lightdm/lightdm.conf ]] && mv /etc/lightdm/lightdm.conf{,.bak}
# Create autologin configuration for the current $USER = $1
echo -e "[Seat:*]\nautologin-user=$1" > /etc/lightdm/lightdm.conf
# Restart 'lightdm' while autologin option is enabled
systemctl restart lightdm.service
# Wait for a moment to complete the login process and remove the conf file
sleep 30 && rm /etc/lightdm/lightdm.conf
# Restore the backup if exists
[[ -f /etc/lightdm/lightdm.conf.bak ]] && mv /etc/lightdm/lightdm.conf{.bak,}
}
# Execute the 'main()' function with root privileges in the background 'sudo -b'
# Pass the curent $USER as arg (https://unix.stackexchange.com/a/269080/201297)
sudo -b bash -c "$(declare -f main); main $USER"
该脚本应以普通用户(属于 sudoers 组)的身份执行。
该脚本将创建该文件的备份副本
/etc/lightdm/lightdm.conf
。然后它将生成一个带有自动登录选项的新配置文件,并为当前用户启用。此时lightdm
将重新启动,用户将通过自动登录选项登录。最后将删除自定义配置并恢复配置文件的原始状态。如果正在使用 GDM:需要重新启动的服务是
gdm3.service
,需要更改的配置文件是/etc/gdm3/custom.conf
。
答案3
这对我来说很好(从 ssh,使用 lightdm):
$ XAUTHORITY=/var/lib/lightdm/.Xauthority DISPLAY=:0.0 sudo sh -c 'xdotool type "My Password" && xdotool key Return'