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-session
xterm