LINUX.ORG.RU

Как получить скриншот с удаленной машины по ssh?

 ,


0

1

Захожу по ssh на удаленную машину. Иксы проброшены, иксовые приложения запускаются. По умолчанию дисплей — компьютер, с которого я захожу:

echo $DISPLAY
localhost:10.0
Мне же нужно сделать скриншот с удаленного дисплея.

Вот так не получается:

env DISPLAY=:0.0 import
No protocol specified
import: unable to open X server `:0.0' @ import.c/ImportImageCommand/359.
«xhost +» не помогает.

Вот так тоже не получается:

xwd -out screenshot.xwd -root -display :0.0
No protocol specified
xwd:  unable to open display ':0.0'

Команды не работают ни от рута (от которого запущены иксы), ни от залогиненного в иксах пользователя, ни от другого пользователя.

Полное указание DISPLAY тоже не помогает:

env DISPLAY=localhost:0.0 import /tmp/1.jpg
import: unable to open X server `localhost:0.0' @ import.c/ImportImageCommand/359.

При этом на удаленном компьютере (двухмониторная конфигурация) есть и :0.0, и :0.1.

как быть?

☆☆☆☆☆

Т.е. на удаленной машине иксы запущены? Тогда xhost +

at ★★ ()

unable to open X server `:0.0'

unable to open display ':0.0'

а если :0 попробовать?

lazyklimm ★★★★★ ()
Ответ на: комментарий от Eddy_Em

Т.е. Вы его по ssh вводите? Так не получится. xhost должен выполнить процесс, уже имеющий доступ к иксам.

at ★★ ()

Пользую:

DISPLAY=":0.0" import -window root screen.png
Проверил, на всякий, на 2х машинах - отработало нормально.
ЗЫ: одномониторки, только вот. 2х мониторный сейчас нет возможности проверить
ЗЫЫ: ваша целевая машинка случайно не пользует нвидаму?

Spirit_of_Stallman ★★★ ()

А если иксы не пробрасывать? У меня нормально работало. И да, cat /var/log/Xorg.0.log|grep '>Screen'

eagleivg ★★★★★ ()
Ответ на: комментарий от Eddy_Em

Не знаю, я обычно записываю это в автозагрузку иксов/kdm/gdm и т.д. и перезапускаю их.

at ★★ ()
Ответ на: комментарий от Spirit_of_Stallman

ваша целевая машинка случайно не пользует нвидаму?

Кого?

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от eagleivg
 cat /var/log/Xorg.0.log|grep '>Screen'
(**) |-->Screen "screen0" (0)
(**) |-->Screen "screen1" (1)

ps auwex | grep DISPLAY кажет и DISPLAY=:0.0, и DISPLAY=:0.1, так что все ОК.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Spirit_of_Stallman

Естественно. Как бы я еще двухмониторную конфигурацию сделал по-человечески?

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

Ну, с этого стоило начинать.
Когда-то имел проблемы с получением дисплея на аналогичной конфигурации.
Сейчас ничего толкового не скажу, я не дома и еду в отпуск (ура!), но если по памяти - они городят какой-то подводный костыль, который даёт 3й дисплей, а 0.0 и 0.1 вроде как и есть, но вроде как и нету.
Мрачно говорить об этом без деталей, но может сам накопаешь в эту сторону.

Spirit_of_Stallman ★★★ ()

Я, скорее всего, чего-то не понимаю, но

echo $DISPLAY
localhost:10.0

10.0

А потом

DISPLAY=:0.0

?

tyakos ★★★ ()
Ответ на: комментарий от Spirit_of_Stallman

Ладно, сейчас инструкцию набросаю, все равно ее туда относить придется — заодно сделаю xhost +, да посмотрю — вдруг что изменится.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

Оказалось проще чем я думал, надо скопировать файл xauth

root@home:~# cp /run/xauth/A\:0-pABhba ~/.Xauthority
DISPLAY=:0 import -window root 1.png

at ★★ ()
Ответ на: комментарий от Eddy_Em

Странно. У меня работает. Вот еще один вариант

root@home:~# XAUTHORITY=/run/xauth/A\:0-pABhba DISPLAY=:0 xterm
xterm запускается на удаленной машине, т.е. доступ у искам получен. (возможно у Вас xauth находится в другом месте)

at ★★ ()
Ответ на: комментарий от at

/run/xauth/

У меня это не /run/xauth, а ~/.Xauthority для пользователя, залогиненного в иксы.

Добавил xhost + в startup IceWM'а данного пользователя — фигвам.

Eddy_Em ☆☆☆☆☆ ()
Последнее исправление: Eddy_Em (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

Похоже у Вас что то с системой. Поднял для чистоты эксперимента виртуалку с dsl. Иксы запущены от юзверя, fluxbox

root@ttyp1[root]# cp /home/dsl/.Xauthority ~
root@ttyp1[root]# aterm

root@ttyp1[root]# DISPLAY=:0 xhost
access control enabled, only authorized clients can connect
root@ttyp1[root]# 

at ★★ ()
Ответ на: комментарий от at

Всем спасибо, заработало!

Все ОК. После перезагрузки системы почему-то стало работать (в автозапуск пользователю, от которого запускается IceWM, добавил xhost +). Теперь все работает как надо:

xwd -root -display :0.0 | xwdtopnm | pnmtopng > 00.png
xwd -root -display :0.1 | xwdtopnm | pnmtopng > 01.png
Дают мне скриншоты с первого и второго дисплеев.

Eddy_Em ☆☆☆☆☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.