Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.
Модераторы: SLEDopit , Модераторы разделов
shweew
Сообщения: 42
Сообщение
shweew » 31.05.2012 12:55
watashiwa_daredeska писал(а): ↑ 31.05.2012 10:40
Ну вот, значит для каждого активного пользователя на терминальном сервере есть DISPLAY, с которым работают клиенты, запущенные от имени этого пользователя. Чтобы показать сообщение пользователю, нужно запустить xmessage на этом DISPLAY. Для этого нужно получить Xauthority для этого DISPLAY. В простейшем случае, Xauthority хранится в ~$TERMUSER/.Xauthority. Т.е. предполагая, что мы можем выяснить всех $USER и соответствующие им $DISPLAY, получаем:
Код: Выделить всё
for user in $(list-users); do
export DISPLAY=$(display-for-user $user)
export XAUTHORITY=$(getent passwd $user | cut -d: -f6)/.Xauthority
xmessage "Save your work! Reboot is going to happen NOW!" &
done
wait
Поиск пользователей и соответствующих им DISPLAY (list-users и display-for-user) зависит от конкретной реализации терминального сервера. Например, если на сервере используется ConsoleKit, можно попробовать ck-list-sessions.
Не хочет:
Код: Выделить всё
xmessage "Save"
No protocol specified
Error: Can't open display: 192.168.1.92:1
Если сделать xhost +, то показывает...
Код: Выделить всё
$XAUTHORITY
-bash: /home/knjzeva/.Xauthority: Отказано в доступе
Даже из под root...
И даже если права 777 на файл...
Ну, может у вас там винда в виртуальных машинах, и клиенты подключаются по RDP. Тогда проще настроить самбу и воспользоваться советом
bormant .
Вообще то разговор идёт про Х-ы, как под самбой или виндой делать - я знаю...
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux
Сообщение
watashiwa_daredeska » 31.05.2012 14:29
shweew писал(а): ↑ 31.05.2012 12:55
Error: Can't open display: 192.168.1.92:1
Т.е. у вас X-сервера УЖЕ торчат портами наружу?
shweew писал(а): ↑ 31.05.2012 12:55
Если сделать xhost +, то показывает...
Код: Выделить всё
$XAUTHORITY
-bash: /home/knjzeva/.Xauthority: Отказано в доступе
Даже из под root...
И даже если права 777 на файл...
Команда "$XAUTHORITY" означает «выполни программу …». ~/.Xauthority — не программа. И xhost + делать не надо. Если права root, достаточно export XAUTHORITY=/home/knjzeva/.Xauthority. Если, конечно, 192.168.1.92:1 — дисплей пользователя knjzeva.
shweew
Сообщения: 42
Сообщение
shweew » 31.05.2012 17:23
Заттрахался я уже...
Короче вот так работает безовсяких настроек Х-ов:
Код: Выделить всё
#!/bin/sh
for username in $(who -u | grep : | grep -v root | awk '{print $1}')
do
export XAUTHORITY=/home/$username/.Xauthority
disp=$(who -u | grep $username | awk '{print $2}')
/usr/bin/X11/xmessage -fn -cronyx-fixed-medium-r-normal--20-200-75-75-c-100-koi8-r -center -name ALARM -buttons OK -display $disp "TEKCT"&
done
exit 0
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux
Сообщение
watashiwa_daredeska » 31.05.2012 17:38
shweew писал(а): ↑ 31.05.2012 17:23
cat /home/$username/.Xauthority > folder/$username.file
export XAUTHORITY=folder/$username.file
Что, неужели
export XAUTHORITY=/home/$username/.Xauthority не работает? Только с копированием?
shweew
Сообщения: 42
Сообщение
shweew » 31.05.2012 18:52
watashiwa_daredeska писал(а): ↑ 31.05.2012 17:38
shweew писал(а): ↑ 31.05.2012 17:23
cat /home/$username/.Xauthority > folder/$username.file
export XAUTHORITY=folder/$username.file
Что, неужели
export XAUTHORITY=/home/$username/.Xauthority не работает? Только с копированием?
Почему-то не получалось, сейчас попробовал - есть контакт, странно конечно...
Скрипт поправил.
shweew
Сообщения: 42
Сообщение
shweew » 31.05.2012 19:02
shweew
Сообщения: 42
Сообщение
shweew » 01.06.2012 09:49
watashiwa_daredeska писал(а): ↑ 31.05.2012 17:38
Что, неужели
export XAUTHORITY=/home/$username/.Xauthority не работает? Только с копированием?
Вот такая вот фигня всётаки после перезагрузки сервера:
Код: Выделить всё
terminal2:~ # export XAUTHORITY=/home/kivanova/.Xauthority
terminal2:~ # $XAUTHORITY
-bash: /home/kivanova/.Xauthority: Отказано в доступе
Ну и само собой:
Код: Выделить всё
terminal2:~ # xmessage -display 192.168.1.92:1 "TEST"
Invalid MIT-MAGIC-COOKIE-1 keyError: Can't open display: 192.168.1.92:1
Есть идеи?
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Сообщение
sash-kan » 01.06.2012 10:50
shweew писал(а): ↑ 01.06.2012 09:49
terminal2:~ # $XAUTHORITY
зачем вы выполняете содержимое переменной xauthority???
не нужно этого делать!
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Сообщение
sash-kan » 01.06.2012 10:56
shweew писал(а): ↑ 01.06.2012 09:49
Есть идеи?
на какой машине запущен x-сервер, к которому вы пытаетесь подключиться для вывода сообщения?
посмотрите на значение переменной DISPLAY у любого процесса, являющегося x-клиентом, подключенным к этому x-серверу·
shweew
Сообщения: 42
Сообщение
shweew » 01.06.2012 11:32
sash-kan писал(а): ↑ 01.06.2012 10:50
shweew писал(а): ↑ 01.06.2012 09:49
terminal2:~ # $XAUTHORITY
зачем вы выполняете содержимое переменной xauthority???
не нужно этого делать!
Без разницы:
Код: Выделить всё
terminal2:~ # export XAUTHORITY=/home/mgurbenko/.Xauthority
terminal2:~ # xmessage -display 192.168.1.69:1 test
No protocol specified
Error: Can't open display: 192.168.1.69:1
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Сообщение
sash-kan » 01.06.2012 11:44
shweew писал(а): ↑ 01.06.2012 11:32
Без разницы
естественно·
второй мой пост прочитали? в нём всё понятно?
shweew
Сообщения: 42
Сообщение
shweew » 01.06.2012 13:53
sash-kan писал(а): ↑ 01.06.2012 11:44
shweew писал(а): ↑ 01.06.2012 11:32
Без разницы
естественно·
второй мой пост прочитали? в нём всё понятно?
Как посмотреть?
А может косяк в том что я через нескольkо SSH c -X подключений лезу на сервак?
Может если локально - так и заработает?
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Сообщение
sash-kan » 01.06.2012 15:49
shweew писал(а): ↑ 01.06.2012 13:53
Как посмотреть?
как угодно·
главное — где: в переменных окружения процесса, являющегося x-клиентом·
hint: переменные окружения процесса доступны через псевдо-файл /proc/<pid>/environ (в файле переменные разделены символом 0x0)·