Вывод сообщения на терминал пользователя
Модераторы: SLEDopit, Модераторы разделов
-
volod
- Сообщения: 28
- ОС: Mandrake 10.1
Вывод сообщения на терминал пользователя
Есть постоянно работающая станция. Всегда активен графический стол простого пользователя (имя известно).
Есть скрипт который отслеживает определенные сообщения syslog.
Как, в случае необходимости, запустить консоль на первом графическом столе пользователяи и вывести в нем нужное сообщение?
Создать консоль и вывести сообщение должен скрипт (!)
Есть скрипт который отслеживает определенные сообщения syslog.
Как, в случае необходимости, запустить консоль на первом графическом столе пользователяи и вывести в нем нужное сообщение?
Создать консоль и вывести сообщение должен скрипт (!)
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Вывод сообщения на терминал пользователя
что-то типа того:
DISPLAY=$(w| grep username| awk '{print $2}'| grep ':') xmessage test
DISPLAY=$(w| grep username| awk '{print $2}'| grep ':') xmessage test
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
volod
- Сообщения: 28
- ОС: Mandrake 10.1
Re: Вывод сообщения на терминал пользователя
Спасибо.
Буду думать. У меня не стоит xmessage...
Я изначально видел решение в запуске терминала, например rxvt, и вывода на него текста.
Судя по ответу, так делать нельзя...
Буду думать. У меня не стоит xmessage...
Я изначально видел решение в запуске терминала, например rxvt, и вывода на него текста.
Судя по ответу, так делать нельзя...
-
strah
- Сообщения: 283
- ОС: Freebsd, linux, Solaris.
Re: Вывод сообщения на терминал пользователя
Почему нельзя то? Просто, вместо xmessage пишешь rxvt. Так хоть OpenOffice можешь ему запустить.
/earth: file system full
-
oxd
- Сообщения: 165
Re: Вывод сообщения на терминал пользователя
Поставьте пользователю месенджер какойнить и не мучайтесь 
КДЕ и Гном имеют встроенные средства сетевого общения, про другие wm не скажу, ибо не знаю
КДЕ и Гном имеют встроенные средства сетевого общения, про другие wm не скажу, ибо не знаю
Товарищ стой! Сожми покрепче маузер!
Не дай предателю мимо пройти!
Он променял консоль на браузер.
Таким не место в сфере IT!
Не дай предателю мимо пройти!
Он променял консоль на браузер.
Таким не место в сфере IT!
-
volod
- Сообщения: 28
- ОС: Mandrake 10.1
Re: Вывод сообщения на терминал пользователя
Не получилось 
#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...
#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: Вывод сообщения на терминал пользователя
Код: Выделить всё
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: Вывод сообщения на терминал пользователя
volod, а вы попробуйте сами по очереди дать команды
Лично у меня на выходе пусто (с моим логином естественно), вот и у вас получается пустая переменная $DISPLAY.
У вас в системе только один юзер, или могут быть залогинены разные?
P.S. На всякий случай спрошу - от чьего имени работает скрипт? А то вывалите юзеру в подарок рутовую консоль
Код: Выделить всё
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: Вывод сообщения на терминал пользователя
читать маны - не модно. модно методом тыка.
ну тыкайте...
Код: Выделить всё
rxvt -display :0 -e "echo 'test'"-
Mage-Warrior
- Сообщения: 869
- Статус: Семь раз понюхай, один раз откуси!
- ОС: SlackWare 12.1
Re: Вывод сообщения на терминал пользователя
Можно xauth использовать с успехом.
Чего-нибудь типа:
И получаете результат на первый попавшийся дисплей пользователя.
Если скрипт работает от root, то для получения корректного доступа к дисплеям пользователя нужно сделать:
Чего-нибудь типа:
Код: Выделить всё
$ 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' разные... :-\
извините, если кого попутал.
тут в основном народ борется с тем, как узнать, на каком юзер терминале. жестко писать ':0' - это не очень правильно.
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$
извините, если кого попутал.
тут в основном народ борется с тем, как узнать, на каком юзер терминале. жестко писать ':0' - это не очень правильно.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Вывод сообщения на терминал пользователя
Ленивая Бестолоч... писал(а): ↑20.07.2009 20:12тут в основном народ борется с тем, как узнать, на каком юзер терминале. жестко писать ':0' - это не очень правильно.
тут надо получить значение из третьего столбца по значению первого?
что может быть проще?