一位年长的亲戚使用 Ubuntu 18.04 + LXDE 桌面,主要用于上网和玩一些文字游戏。他们很少关闭电脑……上次我检查时,它已经开机超过 15 天了。
我通过 ssh 远程管理系统。
当我偶尔需要重启系统时,我希望有某种方法可以确定我的亲戚是否正在使用它,这样我就不会打扰他们。我有时会在半夜重启系统,但他们睡不好,有时会起床玩游戏。
给他们打电话是可以的,但是我们之间相隔好几个时区,有时会把他们吵醒。
如果他们正在玩游戏,我可以看到top
,但我无法判断他们是否正在主动使用浏览器。
某种鼠标和/或键盘活动指示器会很棒,但我希望远离任何类型的键盘记录器类型的软件。我怀疑存在这样的“检测到鼠标/键盘活动”的东西 - 让系统进入睡眠状态/激活屏幕保护程序**,如果没有其他目的,则将其唤醒 - 但我找不到它。
** 我不认为他们真的使用了屏幕保护程序,这只是一个例子。我认为电源管理器只是让屏幕变黑。
是否有某处跟踪“自用户上次键盘/鼠标交互以来的时间”?
任何解决方案都需要通过 ssh 来实现。
答案1
有一个实用程序可以打印 X 屏幕的空闲时间:
DISPLAY=":0" xprintidle
它以毫秒为单位打印自上次键盘或鼠标输入以来的时间。
另一个选择是弹出一个问题框:
DISPLAY=":0" zenity --question --text="Organic Marble asks: Are you currently using this computer?" && echo yes
然后,如果几分钟内没有得到答复,只需按 ctrl-c 并继续重新启动。
答案2
如果显示器配置为节能,您可以检查:
xset -display :0 q
看最后一行:
Monitor is Off
答案3
嗯……这只是一个想法,但如果您通过 ssh 登录到您的亲戚正在使用的同一用户,将DISPLAY
环境变量设置为:1
并运行鼠标对应的数字(您可以使用获取该数字xinput test n
,在我的情况下是 9),那么该命令将在鼠标移动时打印一行文本(形式类似于)。因此,您可以将该命令的输出通过管道传输到某个脚本,该脚本将记录上次输入的时间,这样您就会知道鼠标上次移动的时间(当然,这必须在后台不断运行以记录上次鼠标移动的实际时间)。n
xinput --list
motion a[0]=338 a[1]=889
答案4
我认为唯一能够绝对确定的方法就是“监视”他们的屏幕。
使用以下方式在计算机上安装 x11vnc
sudo apt-get install x11vnc net-tools
(可选)在他们的计算机上创建一个 shell 脚本来自动启动服务器,这样你就不必每次都记住语法了。请注意,
-auth
可能需要更改参数;我现在只能使用 Fedora 进行测试,Ubuntu 可能会将 auth 文件保存在其他位置。
#!/bin/sh
sudo x11vnc -auth /var/run/lxdm/lxdm-\:0.auth -display :0 -rfbport 5900 -localhost
在您的计算机上安装您最喜欢的 VNC 查看器应用程序。
在您的计算机上为端口 5900 设置 SSH 端口隧道。假设您使用 OpenSSH,请将以下内容放入您的
.ssh/config
文件中:
Host theirhostname
LocalForward 5900 localhost:5900
当你想真正看看他们的屏幕时:
像往常一样通过 SSH 进入他们的计算机。
运行 shell 脚本(或者输入那行大
sudo x11vnc
代码)。*启动您的 VNC 查看器应用程序,并指示它连接到
localhost
。
瞧,您应该能够看到他们的屏幕了。
*注意:你将获得一些警告 VNC 服务器未受密码保护。这不是安全风险,因为 VNC 服务器端口只能在本地访问,这意味着任何攻击者都必须已经登录。但是,如果您真的担心,请使用x11vnc -storepasswd
创建密码文件,然后添加-rfbauth /home/user/.vnc/passwd
到x11vnc
命令行。