如何通过 SSH 截屏?

如何通过 SSH 截屏?

我有一台 Ubuntu 桌面计算机。我的范围是通过 SSH 截取本机的屏幕截图。这台机器正在播放视频,我想通过 SSH 截取该视频的屏幕截图。我以 root 用户身份尝试过:

root@user-desktop:~# export DISPLAY=:0
root@user-desktop:~# echo $DISPLAY
:0
root@user-desktop:~# scrot screenshot.png
No protocol specified
Can't open X display. It *is* running, yeah?root@user-desktop:~#

然后我尝试过DISPLAY=:0.0。而不是DISPLAY:=0(我不知道这是否重要)。

root@user-desktop:~# export DISPLAY=:0.0
root@user-desktop:~# echo $DISPLAY
:0.0
root@user-desktop:~# scrot screenshot.png
No protocol specified
Can't open X display. It *is* running, yeah?root@user-desktop:~#

然后我做了与非 root 用户相同的尝试:

user@user-desktop:~$ export DISPLAY=:0
user@user-desktop:~$ echo $DISPLAY
:0
user@user-desktop:~$ scrot screenshot.png
Invalid MIT-MAGIC-COOKIE-1 keyCan't open X display. It *is* running, yeah?user@user-desktop:~$

user@user-desktop:~$ export DISPLAY=:0.0
user@user-desktop:~$ echo $DISPLAY
:0.0
user@user-desktop:~$ scrot screenshot.png
Invalid MIT-MAGIC-COOKIE-1 keyCan't open X display. It *is* running, yeah?user@user-desktop:~$

答案1

你能试试这个吗:

ssh -x user@user-desktop<<'EOF'
export XAUTHORITY=$(
    ps -u $(id -u) -o pid= |
    xargs -I{} cat /proc/{}/environ 2>/dev/null |
    tr '\0' '\n' |
    grep -m1 '^XAUTHORITY='
)
export DISPLAY=$(
   ps -u $(id -u) -o pid= |
   xargs -I{} cat /proc/{}/environ 2>/dev/null |
   tr '\0' '\n' |
   grep -m1 '^DISPLAY='
)

scrot screenshot.png
EOF

基于在此

答案2

您可以尝试在与该 X11 会话中运行的进程相同的环境和相同的用户中执行此操作。

sudo -u "$(ps -o user= -p "$pid")" xargs -r0a /proc/"$pid"/environ sh -c '
  env -i -- "$@" scrot -' sh > screenshot.png

某个正在运行的进程的 pid或窗口管理器$pid的 pid 可能在哪里。gnome-sessionxterm

相关内容