The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Удаленное управление Х-ами"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Удаленное управление Х-ами"  
Сообщение от Zzlo (ok) on 20-Окт-07, 18:08 
Надо удаленно запустить (putty, ssh) скринсейвер, Х на машине запущен (gnome).
ТЕ, я в ssh-терминале запускаю скринсейвер, а он в Х включается. Как это сделать, у меня не получается? Набираю я, например, xdg-screensaver lock, а он не стартует, выкидывает ошибку
xprop: unable to open display ''
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Удаленное управление Х-ами"  
Сообщение от jd (??) on 20-Окт-07, 21:08 
А где вы хотите, чтобы он запустился-то? Если в двух словах, то система X Window состоит (концептуально) из двух частей: клиента и сервера. Сервер - это то, к чему подключен монитор и клавиатура, а клиент - это то, где работает приложение (точнее, приложение и есть клиент). Приложение при старте соединяется с сервером и использует его для ввода/вывода. Таким образом можно, например, запустить удалённое X-приложение на своём X-сервере - тогда программа будет выполняться на удалённом хосте, а окна будут рисоваться на вашем терминале (X-сервере). Для этого нужно, чтобы ваш сервер поддерживал (в конфиге должно быть настроено) удалённые полключения, чтобы сеть была должным образом настроена (фаервол и пр.) и при запуске приложения нужно установить соответствующим образом переменную среды DISPLAY (или указать то же самое с помощью опций, обычно -display).

Если же вы хотите просто зайти на удалённую машину, где работают иксы и запустить там приложение, которое будет отображаться на той же машине (хотя и не совсем понятно, зачем, ведь управлять им вы не сможете и вывода не увидите), то вам нужно так же задать переменную DISPLAY, так как ssh её, естественно, не устанавливает. Например, использовать DISPLAY=":0.0".

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Удаленное управление Х-ами"  
Сообщение от Zzlo (ok) on 20-Окт-07, 23:50 
>Если же вы хотите просто зайти на удалённую машину, где работают иксы
>и запустить там приложение, которое будет отображаться на той же машине
>(хотя и не совсем понятно, зачем, ведь управлять им вы не
>сможете и вывода не увидите), то вам нужно так же задать
>переменную DISPLAY, так как ssh её, естественно, не устанавливает. Например, использовать
>DISPLAY=":0.0".

О! То, что надо. Мне интересен именно последний случай. Ситуация: сидит чел и воркает себе. Тут я, тайком подконнекченый по ssh, включаю скринсейвер. Ессно, запароленый. И так вплоть до истерики :) Это шутливая ситуация, но смыл вопроса именно таков. И с какими правами запустится программа, если я рутом подконнекчивался?

Снова проблема!

Сделал DISPLAY=":0.0"
Проконтролировал значение "echo DISPLAY", оно показало :0.0
Тем не менее, команда "xdg-screensaver lock" вываливается с ошибкой
xprop:  unable to open display ''
Как исправить?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Удаленное управление Х-ами"  
Сообщение от Zzlo (ok) on 21-Окт-07, 00:00 
>Сделал DISPLAY=":0.0"
>Проконтролировал значение "echo DISPLAY", оно показало :0.0
>Тем не менее, команда "xdg-screensaver lock" вываливается с ошибкой
>xprop:  unable to open display ''
>Как исправить?

При наборе xprop -display :0.0 пропадает ввод с клавиатуры, появляется по ctrl-C. Я так понимаю, xprop как-то может запускать приложения в нужном Х-сеансе? Мо ману этого не скажешь, вроде чисто информативная тулза...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Удаленное управление Х-ами"  
Сообщение от jd (??) on 21-Окт-07, 01:53 
>При наборе xprop -display :0.0 пропадает ввод с клавиатуры, появляется по ctrl-C.
>Я так понимаю, xprop как-то может запускать приложения в нужном Х-сеансе?
>Мо ману этого не скажешь, вроде чисто информативная тулза...

Он (ввод) никуда не пропадает. Просто xprop ждёт, кока вы мышкой тыкните в какое-нибудь окошко, чтобы выдать на стандартный поток вывода о нём информацию. Соответственно, Ctrl-C просто прерывает его работу (убивает процесс). Это как раз то, а чём я говорил вначале: вы запускаете программу, но управлять ей штатно не можете, так как она ждёт ввода (клавиатурного, мышиного, etc) от удалённого X-сервера.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Удаленное управление Х-ами"  
Сообщение от Zzlo (ok) on 21-Окт-07, 04:40 
>Он (ввод) никуда не пропадает. Просто xprop ждёт, кока вы мышкой тыкните
>в какое-нибудь окошко, чтобы выдать на стандартный поток вывода о нём
>информацию. Соответственно, Ctrl-C просто прерывает его работу (убивает процесс). Это как
>раз то, а чём я говорил вначале: вы запускаете программу, но
>управлять ей штатно не можете, так как она ждёт ввода (клавиатурного,
>мышиного, etc) от удалённого X-сервера.

Так как мне запустить скринсейвер, или машину залочить удаленно? С ссавером я думаю будет проще, даешь команду лок - он и лочит. Но если есть другой способ, не подскажете ли?
Скринсейвер в Х-ах не стартует, проверено (какой уж ему ввод, он тут же закроется :) )!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Удаленное управление Х-ами"  
Сообщение от jd (??) on 21-Окт-07, 06:25 
>Так как мне запустить скринсейвер, или машину залочить удаленно? С ссавером я
>думаю будет проще, даешь команду лок - он и лочит. Но
>если есть другой способ, не подскажете ли?
>Скринсейвер в Х-ах не стартует, проверено (какой уж ему ввод, он тут
>же закроется :) )!

Да нет, всё вы делаете правильно (о моральной стороне вопроса я не говорю). Просто надо понимать, что ввод вводу рознь. Обычно у процессов в UNIX есть так называемые стандартные потоки ввода/вывода. В частности, они используются в консоли. Помимо этого, у иксовых процессов есть возможность получать ввод от иксов в виде сигналов о нажатых клавишах, движении мыши и т.д. И выводить в иксы (то есть, рисовать всякие окошки), разумеется. Это принципиально разные, в плане обработки, способы взаимодействия с пользователем. Поэтому большинство программ не используют оба этих ввода/вывода, из-за избыточности такого метода (правда есть исключения. например mplayer, но тому есть свои причины). Поэтому, если запустить из командной строки иксовое приложение, оно "захавает" ввод (консольный) до тех пор, пока не выйдет. Это вы и наблюдали, когда запускали xprop - он ждал нажатия кнопки мыши и ничего больше не делал. Чтобы этого не происходило, можно запустить процесс в бэкграунде. Правда тут есть нюансы, связанные с завершением процесса оболочки, из которой выполнена команда. В зависимости от того, как всё было сделано, бэкграундный процесс может остаться сам по себе, может убиться или процесс sshd, обслуживающий эту сессию (вместе с ssh на вашем конце), может "подвиснуть" вплоть до завершения упомянутого процесса.

Короче, дерзайте, эксперементируйте. Лучше один раз попробовать, чем сто раз услышать.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Удаленное управление Х-ами"  
Сообщение от Zzlo (ok) on 21-Окт-07, 17:23 
Вобщем, вводить мне ничего не надо и вывод мне тоже не нужен, разве что поучительный. Мне нужно запустить программу на выполнение, конкретно - скринсейвер. Не получается... :(
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Удаленное управление Х-ами"  
Сообщение от jd (??) on 21-Окт-07, 01:46 
>Тут я, тайком подконнекченый по ssh, включаю скринсейвер.
>Ессно, запароленый. И так вплоть до истерики :) Это шутливая ситуация,

Что ж, думаю человек особенно сможет оценить вашу шутку, если из-за этого у него пропадут какие-нибудь несохранённые данные (например, когда он от безысходности перезагрузит машину)...


>Сделал DISPLAY=":0.0"
>Проконтролировал значение "echo DISPLAY", оно показало :0.0

Думаю, вы его не совсем "проконтролировали". Даю подсказку: скорее всего в качестве shell у вас bash, а echo в таком случае - его встроенная команда, а не внешняя программа, как, например, упомянутый xdg-screensaver.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Удаленное управление Х-ами"  
Сообщение от Zzlo (ok) on 21-Окт-07, 04:42 
>>Сделал DISPLAY=":0.0"
>>Проконтролировал значение "echo DISPLAY", оно показало :0.0
>
>Думаю, вы его не совсем "проконтролировали". Даю подсказку: скорее всего в качестве
>shell у вас bash, а echo в таком случае - его
>встроенная команда, а не внешняя программа, как, например, упомянутый xdg-screensaver.

Тогда как объявить эту переменную? (вначале Display был 0, потом сменился на :0.0, вроде все сработало)
В КАКОМ МЕСТЕ ЛЕЖАТ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ СРЕДЫ??

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Удаленное управление Х-ами"  
Сообщение от Zzlo (ok) on 21-Окт-07, 04:45 
>В КАКОМ МЕСТЕ ЛЕЖАТ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ СРЕДЫ??

Я ламер, да?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Удаленное управление Х-ами"  
Сообщение от jd (??) on 21-Окт-07, 05:59 
>>В КАКОМ МЕСТЕ ЛЕЖАТ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ СРЕДЫ??
>
>Я ламер, да?

Так можно сказать, но не потому, что не знаете чего-то, а потому, что не пытаетесь найти ответ самостоятельно, когда это совсем не сложно.

Что же касается переменных среды, то они - аттрибут процесса. Никаких глобальных и неглобальных переменных среды нет. Как правило, когда один процесс пораждает другой, переменные среды наследуются. Но в случае с shell они наследуются не все, а только те, которые "экспортированы". На самом деле, если в bash сделать 'variable=value', он не создаёт переменную среды, а лишь создаёт свою внутреннюю переменную, значение которой будет использовано, если в какой-нибудь команде встретится что-нибудь вроде $variable (в соответствии с правилами разыменовывания переменных в bash). В sh-подобных оболочках экспорт переменных делается с помощью команды export. В частности вы можете сделать:

DISPLAY=:0.0
export DISPLAY

или просто

export DISPLAY=:0.0

Тогда всем процессам, запускаемым из этой оболочки будет передаваться, в числе прочих, и переменная DISPLAY. Если же экспорта не сделать, то переменная будет "видна" только интерпретатору bash. Это хорошо видно из следующего примера:

/tmp$ cat test.sh
#!/bin/bash
echo $var
/tmp$ var=xxx
/tmp$ echo $var
xxx
/tmp$ ./test.sh

/tmp$ export var
/tmp$ ./test.sh
xxx
/tmp$

Здесь команда echo $var выдаёт, в отличие от test.sh, значение 'xxx' потому, что при интерпретации команды, bash подставляет вместо $var её значение. Фактически, после предварительной обработки, он выполняет команду echo xxx. Когда же переменная экспортируется, она становится "видна" и в test.sh.

Если вы запускаете какой-нибудь процесс из-под иксов (с помощью меню, например), то этому процессу (допустим это xterm) автоматически назначается соответствующая переменная DISPLAY. Это делает window manager - программа, которая обслуживает все эти системные меню и пр. И всем дочерним процессам, например bash и всем процессам, запущенным из него, если специально ничего не делать, эта переменная тоже передаётся.

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Удаленное управление Х-ами"  
Сообщение от Zzlo (ok) on 21-Окт-07, 17:22 
>>>В КАКОМ МЕСТЕ ЛЕЖАТ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ СРЕДЫ??
>>
>>Я ламер, да?
>
>Так можно сказать, но не потому, что не знаете чего-то, а потому,
>что не пытаетесь найти ответ самостоятельно, когда это совсем не сложно.
>

Тогда я не ламер, а лентяй. Что гораздо неизлечимей :)

export сработал, ошибок мне не пишут, спасибо. Вот только запускается еще один Х-сеанс. А мне нужно в текущем запустить. Цели благие: отогнать детей от компа в сторону учебы, тк меня дома в этот момент нету. :) Где указывается, в каком сеансе запускать аппликацию?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Удаленное управление Х-ами"  
Сообщение от angra (ok) on 22-Окт-07, 05:16 
Вы локально на "детской" машине запустите(разумеется из эмулятора терминала типа xterm, gterm,aterm,konsole или что у вас там) "echo $DISPLAY", чтобы увидеть что именно вам надо писать в переменную


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Удаленное управление Х-ами"  
Сообщение от Zzlo (ok) on 22-Окт-07, 07:51 
>Вы локально на "детской" машине запустите(разумеется из эмулятора терминала типа xterm, gterm,aterm,konsole
>или что у вас там) "echo $DISPLAY", чтобы увидеть что именно
>вам надо писать в переменную

У меня gterm, но мне это не помогло. Я увидел :0.0 , еще вчера :-/

Все пишут о терминальных серверах, и никто о моем случае, когда в сеансе Х надо удаленно запустить программу. :(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру