通过 SSH 从 Gnome 桌面获取屏幕截图

通过 SSH 从 Gnome 桌面获取屏幕截图

我为基于 Fedora 30(即将推出 32)的“数字标牌客户端”设置了自动启动安装,我需要获得屏幕上当前内容的实际视觉反馈。我尝试通过命令行启用 Gnome-Remote-Desktop(请参阅通过命令行启用 Gnome 屏幕共享?)但不幸的是我不能。

所以新的方法是,截取屏幕截图(并通过 scp 复制)。虽然我可以通过 gnome 终端直接在客户端上截取屏幕截图gnome-screenshot,但我不知道如何从远程执行此操作。我还尝试了其他工具,例如 KDE Spectacle 或 Shutter,但也没有运气。

一个想法是设置一个 cronjob 来截取屏幕截图:

$> crontab -e

1 * * * * gnome-screenshot

但这不起作用。journalctl _COMM=cron-- No entries --

有人知道如何从 Gnome-Wayland-Fedora 桌面截取屏幕截图吗?这应该通过 crontab 工作吗?

答案1

对于韦兰

根据n-tchen的信息,火焰射击(在 Fedora 存储库中)效果很好:

flameshot screen -p ~/

如果您通过 ssh 连接,请WAYLAND_DISPLAY=wayland-0在上一行的开头添加。

您也可以使用gnome-screenshotFlameshot 来代替,但您仍然需要为 ssh 添加上述内容。

附加信息 (来源):

Wayland 上跨平台截图的方式是通过xdg-桌面门户(它也适用于 Flatpak 之外)。看https://github.com/flatpak/xdg-desktop-portal/blob/master/data/org.freedesktop.portal.Screenshot.xml

最后,Pyscreenshot 支持 Wayland;看GitHub 自述文件

对于X11

ImageMagick 的命令import可以很好地完成屏幕截图:

import -silent -window root /tmp/screenshot.jpg

如果您通过 ssh 连接,请DISPLAY=:0.0在上一行的开头添加,并且您需要以与本地登录相同的用户身份登录。

如果您想在 crontab 中运行它,请按以下步骤进行设置。这将每 6 分钟截取一次屏幕截图,并将其与日期时间编码的文件名一起存储在/root/monitor/.它已经在 Ubuntu 16.04 和 18.04 上进行了测试。

echo -n "/bin/bash -c '"                                                                  >cronexec
echo -n   'export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin && ' >>cronexec
echo -n   'export HOME=/root && '                                                        >>cronexec
echo -n   'export D1=/tmp/gneemp && '                                                    >>cronexec
echo -n   'export F2=`date --utc +/root/monitor/%Y-%m-%dT%H:%M.jpg` && '                 >>cronexec
echo -n   'mkdir -p $D1 && '                                                             >>cronexec
echo -n   'chmod 643 $D1 && '                                                            >>cronexec
echo -n   'DISPLAY=:0.0 sudo -u `who --users |head -1 |grep -o "^\S*"` import -quiet -silent -window root $D1/tmp.jpg && '  >>cronexec
echo -n   'mkdir -p /root/monitor && '                                                   >>cronexec
echo -n   'mv $D1/tmp.jpg $F2 && '                                                       >>cronexec
echo -n   'rmdir $D1 '                                                                   >>cronexec
echo    "'"                                                                              >>cronexec
perl -p -i -e 's|\%|\\\%|g;' cronexec # from the manpage:  "Percent-signs (%) in the command, unless escaped with backslash (\) ..."
(sudo crontab -l 2>/dev/null; echo -n "*/6 * * * * "; cat cronexec) |sudo crontab - && rm cronexec

相关内容