Не мог запустить wmctrl на ssh сессии

Я пишу сценарий для запуска изображений на целевом сервере, следующее является примером кода, взятым из сценария.

cat "$img" | ssh "beer@laika" "export DISPLAY=:0; display - && sleep 5 && wmctrl -r ImageMagick -e 0,254,600,800,560"

Целевая машина, которая действительно в состоянии отобразить изображение правильно, sleep команда кажется выполнению прекрасного tho.

Проблема заключается на wmctrl, не было никакого окна движущиеся операции предшествующий запуск сценария после ожидания нескольких минут, я прихожу к заключению, что команда, возможно, перестала работать.

К моему удивлению вручную движущееся окно на самом деле работало, целевая машина показывает, что окно было перемещено, и я могу, ясно видел его.

ssh beer@laika "export DISPLAY=:0; wmctrl -r ImageMagick -e 0,254,600,750,480"

Что могло быть неправильным с моей начальной настройкой? Есть ли что-нибудь, что я пропускаю?

0
задан 14 January 2020 в 12:42

2 ответа

Команда

display - && sleep 5 && wmctrl -r ImageMagick -e 0,254,600,800,560

запускается display управляйте, ожидает его для выхода и затем работает sleep 5 && wmctrl -r ImageMagick -e 0,254,600,800,560 если статус выхода указывает на успех.

Вы, вероятно, хотите

display - & sleep 5 && wmctrl -r ImageMagick -e 0,254,600,800,560

который запускается display в фоне оболочки затем сразу продолжает остающиеся команды.

0
ответ дан 14 January 2020 в 22:23

Похоже, проблема в ssh :

ДИСПЛЕЙ и АВТОРИТЕТ

Программе X требуются две части информации, чтобы подключиться к X дисплей. (Обратите внимание, что wmctrl - это X-программа, даже если она обращается к окна других процессов, а не создание собственного.)

  • Ему нужен адрес дисплея, который обычно равен : 0 , когда вы вошли в систему локально, или : 10 , : 11 и т. Д., Когда вы вошли в систему удаленно (но количество может меняться в зависимости от того, сколько X соединения активны). Адрес дисплея обычно указано в переменной среды DISPLAY.

  • Требуется пароль для отображения. Пароли X-дисплея называются волшебными куки-файлами. Волшебные файлы cookie не указаны напрямую: они всегда хранятся в авторитетных файлах X, которые представляют собой набор записи формы «дисплей: 42 имеет cookie 123456». Авторитет X файл обычно указывается в переменной окружения XAUTHORITY. Если $ XAUTHORITY не задано, программы используют ~ / .Xauthority .

К счастью, вы можете решить эту проблему, установив несколько файлов cookie:

Чтобы копировать файлы cookie при входе в X-сессию рабочего стола, добавьте следующие строки в ~ / .xprofile или ~ / .profile (или какой-либо другой скрипт который читается при входе в систему):

 case: $ DISPLAY: $ XAUTHORITY in
 : *:? *) XAUTHORITY = ~ / .Xauthority xauth merge "$ XAUTHORITY" ;;
esac

Это краткое изложение ответа. Пожалуйста, перейдите по ссылке выше для получения всех подробностей.

0
ответ дан 17 January 2020 в 13:19

Другие вопросы по тегам:

Похожие вопросы: