Ssh

通過 SSH 從 Gnome 桌面獲取螢幕截圖

  • May 11, 2020

我為基於 Fedora 30(很快 32)的“數字標牌客戶端”設置了一個自動 kickstart 安裝,我需要獲得目前螢幕上的實際視覺回饋。我嘗試通過命令行啟用 Gnome-Remote-Desktop(請參閱通過命令行啟用 Gnome 螢幕共享?),但不幸的是我無法做到。

所以新方法是,截取螢幕截圖(並通過 scp 複製)。雖然我可以通過 gnome-terminal 直接在客戶端上截取螢幕截圖gnome-screenshot,但我不知道如何從遠端執行此操作。我還嘗試了其他工具,例如 KDE Spectacle 或 Shutter,但也沒有運氣。

一個想法是設置一個cronjob來截取螢幕截圖:

$> crontab -e

1 * * * * gnome-screenshot

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

有人知道如何從 Gnome-Wayland-Fedora 桌面截取螢幕截圖嗎?這應該通過 crontab 工作嗎?

對於韋蘭

根據來自 n-tchen 的資訊,Flameshot(在 Fedora 儲存庫中)執行良好:

flameshot screen -p ~/

如果您通過 ssh 連接,WAYLAND_DISPLAY=wayland-0請在上述行的開頭添加。

您也可以使用gnome-screenshot代替 Flameshot,但您仍然需要為 ssh 添加上述內容。

附加資訊(來源):

在 Wayland 上截屏的跨平台方式是通過xdg-desktop-portal(也可以在 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

引用自:https://unix.stackexchange.com/questions/585753