Вывод сообщения на терминал пользователя

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

volod
Сообщения: 28
ОС: Mandrake 10.1

Вывод сообщения на терминал пользователя

Сообщение volod »

Есть постоянно работающая станция. Всегда активен графический стол простого пользователя (имя известно).
Есть скрипт который отслеживает определенные сообщения syslog.
Как, в случае необходимости, запустить консоль на первом графическом столе пользователяи и вывести в нем нужное сообщение?
Создать консоль и вывести сообщение должен скрипт (!)
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Вывод сообщения на терминал пользователя

Сообщение Ленивая Бестолочь »

что-то типа того:
DISPLAY=$(w| grep username| awk '{print $2}'| grep ':') xmessage test
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
volod
Сообщения: 28
ОС: Mandrake 10.1

Re: Вывод сообщения на терминал пользователя

Сообщение volod »

Спасибо.
Буду думать. У меня не стоит xmessage...

Я изначально видел решение в запуске терминала, например rxvt, и вывода на него текста.
Судя по ответу, так делать нельзя...
Спасибо сказали:
Аватара пользователя
strah
Сообщения: 283
ОС: Freebsd, linux, Solaris.

Re: Вывод сообщения на терминал пользователя

Сообщение strah »

Почему нельзя то? Просто, вместо xmessage пишешь rxvt. Так хоть OpenOffice можешь ему запустить.
/earth: file system full
Спасибо сказали:
Аватара пользователя
oxd
Сообщения: 165

Re: Вывод сообщения на терминал пользователя

Сообщение oxd »

Поставьте пользователю месенджер какойнить и не мучайтесь :)
КДЕ и Гном имеют встроенные средства сетевого общения, про другие wm не скажу, ибо не знаю
Товарищ стой! Сожми покрепче маузер!
Не дай предателю мимо пройти!
Он променял консоль на браузер.
Таким не место в сфере IT!
Спасибо сказали:
volod
Сообщения: 28
ОС: Mandrake 10.1

Re: Вывод сообщения на терминал пользователя

Сообщение volod »

Не получилось :(

#DISPLAY=$(w| grep volod| awk '{print $2}'| grep ':') rxvt test
xrdb: Can`t open display ''
rxvt: bad option "test"
...

Эксперементировал на KDE и IceView
Причем с KDE
w| grep volod
возвращает
username volod pts/0 10:40 45:23 0.00s 0.30s kdeinit: kwrited

а IceView
возвращает только заголовок
USER TTY LOGIN@ IDLE JCPU PCPU WHAT

//-----------------------------
Махсимум что получилось под KDE:
#DISPLAY=$(w| grep volod| awk '{print $2}'| grep ':') kwrite test.txt
kwrite: cannot connect to X server

Хотя эти строки пишу с запущенного X server...
Спасибо сказали:
Аватара пользователя
strah
Сообщения: 283
ОС: Freebsd, linux, Solaris.

Re: Вывод сообщения на терминал пользователя

Сообщение strah »

Код: Выделить всё

username volod pts/0 10:40 45:23 0.00s 0.30s kdeinit: kwrited

Хмм, а пользователь vold точно в иксах через kdm/xdm/gdm залогинился? Или ты просто в консоли startx набрал? В любом случае, попробуй вместо DISPLAY=$(...) прописать DISPLAY=:0.0 (конечно, так делать неправильно, но всеравно попробуй).
/earth: file system full
Спасибо сказали:
Аватара пользователя
Encore
Сообщения: 656
Статус: loading..............
ОС: Debian

Re: Вывод сообщения на терминал пользователя

Сообщение Encore »

volod, а вы попробуйте сами по очереди дать команды

Код: Выделить всё

w| grep volod

Код: Выделить всё

w| grep volod| awk '{print $2}'

Код: Выделить всё

w| grep volod| awk '{print $2}'| grep ':'

Лично у меня на выходе пусто (с моим логином естественно), вот и у вас получается пустая переменная $DISPLAY.
У вас в системе только один юзер, или могут быть залогинены разные?

P.S. На всякий случай спрошу - от чьего имени работает скрипт? А то вывалите юзеру в подарок рутовую консоль :)
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Вывод сообщения на терминал пользователя

Сообщение drBatty »

volod писал(а):
09.07.2009 18:20
Я изначально видел решение в запуске терминала, например rxvt, и вывода на него текста.
Судя по ответу, так делать нельзя...

читать маны - не модно. модно методом тыка.
ну тыкайте...

Код: Выделить всё

rxvt -display :0 -e "echo 'test'"
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Mage-Warrior
Сообщения: 869
Статус: Семь раз понюхай, один раз откуси!
ОС: SlackWare 12.1

Re: Вывод сообщения на терминал пользователя

Сообщение Mage-Warrior »

Можно xauth использовать с успехом.
Чего-нибудь типа:

Код: Выделить всё

$ DISPLAY=`xauth list|head -n 1|awk '{print $1}'` rxvt

И получаете результат на первый попавшийся дисплей пользователя.
Если скрипт работает от root, то для получения корректного доступа к дисплеям пользователя нужно сделать:

Код: Выделить всё

# DISPLAY=`su username -c "xauth list"|head -n 1|awk '{print $1}'` rxvt
*- Большинство проблем, дружок, завсегда покажет лог! -*
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Вывод сообщения на терминал пользователя

Сообщение Ленивая Бестолочь »

Encore, может у нас реализации 'w' разные... :-\
rakul@misa:/mnt/anime/games/silent hill 2 dc$ w
20:08:27 up 12 days, 21:45, 3 users, load average: 1,24, 1,32, 1,19
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty2 - 08Jul09 5days 0.00s 0.00s -bash
rakul :0 - 08Jul09 ?xdm? 9days 0.01s /bin/sh /usr/bin/x-session-manager
rakul pts/0 :0 08Jul09 12days 0.00s 0.01s /usr/bin/kwrited
rakul@misa:/mnt/anime/games/silent hill 2 dc$ w| grep rakul
rakul :0 - 08Jul09 ?xdm? 9days 0.01s /bin/sh /usr/bi
rakul pts/0 :0 08Jul09 12days 0.00s 0.01s /usr/bin/kwrite
rakul@misa:/mnt/anime/games/silent hill 2 dc$ w| grep rakul| awk '{print $2}'
:0
pts/0
rakul@misa:/mnt/anime/games/silent hill 2 dc$ w| grep rakul| awk '{print $2}'| grep ':'
:0
rakul@misa:/mnt/anime/games/silent hill 2 dc$

извините, если кого попутал.

drBatty писал(а):
20.07.2009 12:52
читать маны - не модно. модно методом тыка.
ну тыкайте...

тут в основном народ борется с тем, как узнать, на каком юзер терминале. жестко писать ':0' - это не очень правильно.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Вывод сообщения на терминал пользователя

Сообщение drBatty »

Ленивая Бестолоч... писал(а):
20.07.2009 20:12
тут в основном народ борется с тем, как узнать, на каком юзер терминале. жестко писать ':0' - это не очень правильно.

тут надо получить значение из третьего столбца по значению первого?
что может быть проще?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: