SSH를 통해 스크린샷을 찍는 방법은 무엇입니까?

SSH를 통해 스크린샷을 찍는 방법은 무엇입니까?

Ubuntu 데스크톱 컴퓨터가 있습니다. 내 범위는 SSH를 통해 내 로컬 컴퓨터의 스크린샷을 찍는 것입니다. 이 기기는 비디오를 재생하고 있는데 SSH를 통해 비디오의 스크린샷을 찍고 싶습니다. 나는 루트 사용자로 시도했습니다.

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:~#

그런 다음 루트가 아닌 사용자와 동일한 작업을 시도했습니다.

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

관련 정보