Author Topic: Чем из скрипта отправить сообщение на консоль X-сервера  (Read 8673 times)

0 Members and 1 Guest are viewing this topic.

Offline Xray_Linux_Root

  • Sr. Member
  • ****
  • Posts: 296
  • Karma: +2/-0
Кто знает чем можно слать сообщения из скрипта на все консоли с запущенным X-сервером (оконный менеджер: KDE или Gnome)?

З.Ы. не путать с обычными IM, т.к. в данном случае именно на консоли надо отправлять сообщения. Чтобы все пользователи сидящие в иксах получали их.

Mandrake, ASPLinux, Slackware, RedHat, Fedora, Debian
Зачем M$ Exchange? Есть eGroupware!
-j MASQUERADE + друзья в других сетях помогут построить мир независимо от желания вашего провайдера ;)

Offline Terminator

  • Jr. Member
  • **
  • Posts: 80
  • Karma: +0/-0
    • Motor-club
Александр.

Offline Safir

  • Sr. Member
  • ****
  • Posts: 402
  • Karma: +0/-0
    • http://
Quote from: Terminator
xmessage?
А авторизация на X-сервере?

Offline Xray_Linux_Root

  • Sr. Member
  • ****
  • Posts: 296
  • Karma: +2/-0
Quote from: Terminator
xmessage?


Ага, почти оно.... только косяк с кодировкой.....
У меня юзеры в транслите читают не очень... а ангийский вообще не знают.
И даже не знают что работают в Linux

Просто надо каким-то образом юзеру, который инициировал обмен почтой по протоколу UUCP сообщить, что передача/получение завершена/не завершена. А то он примется давить на ярлык разрыва dial-up соединения раньше времени, а соединение не будет рваться, т.к. в скрипте присутствует проверка файла блокировки uucp.
А если не выдать какое либо сообщение - то его действия вообще нельзя будет спрогнозировать

З.Ы. будем смотреть возможность локализации.

Ещё кто знает варианты?
« Last Edit: July 06, 2007, 12:46:24 by Xray_Linux_Root »
Mandrake, ASPLinux, Slackware, RedHat, Fedora, Debian
Зачем M$ Exchange? Есть eGroupware!
-j MASQUERADE + друзья в других сетях помогут построить мир независимо от желания вашего провайдера ;)

Offline Safir

  • Sr. Member
  • ****
  • Posts: 402
  • Karma: +0/-0
    • http://
Quote from: Xray_Linux_Root
Ага, почти оно.... только косяк с кодировкой.....
У меня юзеры в транслите читают не очень... а ангийский вообще не знают.
И даже не знают что работают в Linux

Просто надо каким-то образом юзеру, который инициировал обмен почтой по протоколу UUCP сообщить, что передача/получение завершена/не завершена. А то он примется давить на ярлык разрыва dial-up соединения раньше времени, а соединение не будет рваться, т.к. в скрипте присутствует проверка файла блокировки uucp.
А если не выдать какое либо сообщение - то его действия вообще нельзя будет спрогнозировать

З.Ы. будем смотреть возможность локализации.

Ещё кто знает варианты?
Блокировка чем определяется? Наличием файла? в стартовый скрипт иксов вписать мелкого демона (хоть шеловский скрипт), который будет проверять его наличие и при исчезновении выдавать xmessage. Текст сообщения хранить в какой-то кодировке (если она разная для разных пользователей) и перекодировать в локаль - тоже решается скриптом. Про подробности думать надо, принцип такой.

Offline Xray_Linux_Root

  • Sr. Member
  • ****
  • Posts: 296
  • Karma: +2/-0
Quote from: Safir
Блокировка чем определяется? Наличием файла? в стартовый скрипт иксов вписать мелкого демона (хоть шеловский скрипт), который будет проверять его наличие и при исчезновении выдавать xmessage. Текст сообщения хранить в какой-то кодировке (если она разная для разных пользователей) и перекодировать в локаль - тоже решается скриптом. Про подробности думать надо, принцип такой.

Стоп,стоп,стоп...

Снова я не договорил.

Сообщение должно выскакивать только в перечисленных случаях .
1. При запуске скрипта разрыва соединения, если существует файл блокировки /var/lock/uucp/LOCK..nodename.
2. При запуске скрипта установки соединения и начала передачи почты.

В обоих случаях скрипт запускает пользователь и благодаря этому кодировка для отправки сообщения используется та, что является текущей у самого пользователя.
Но пользователь вместо фразы "Тествое сообщение" видит то, что видите вы на прикреплённом изображении:
« Last Edit: July 06, 2007, 13:45:54 by Xray_Linux_Root »
Mandrake, ASPLinux, Slackware, RedHat, Fedora, Debian
Зачем M$ Exchange? Есть eGroupware!
-j MASQUERADE + друзья в других сетях помогут построить мир независимо от желания вашего провайдера ;)

Offline Safir

  • Sr. Member
  • ****
  • Posts: 402
  • Karma: +0/-0
    • http://
Quote from: Xray_Linux_Root
Стоп,стоп,стоп...

Снова я не договорил.

Сообщение должно выскакивать только в перечисленных случаях .
1. При запуске скрипта разрыва соединения, если существует файл блокировки /var/lock/uucp/LOCK..nodename.
2. При запуске скрипта установки соединения и начала передачи почты.

В обоих случаях скрипт запускает пользователь и благодаря этому кодировка для отправки сообщения используется та, что является текущей у самого пользователя.
Но пользователь вместо фразы "Тествое сообщение" видит то, что видите вы на прикреплённом изображении:
Шрифты? Я попытался провернуть такой фокус с использованием шлюза и локально запущенного X-сервера - та же самая беда. Дома подобное прокатывало, даже напоминалку жене сочинил на таком принципе.

Offline Xray_Linux_Root

  • Sr. Member
  • ****
  • Posts: 296
  • Karma: +2/-0
Quote from: Safir
Шрифты?

Ага, они самые.... в используемом по умолчанию шрифте отсутствуют необходимые глифы....

Но это на моей машине такой косяк, посмотрим чего будет на продакшен сервере.
Mandrake, ASPLinux, Slackware, RedHat, Fedora, Debian
Зачем M$ Exchange? Есть eGroupware!
-j MASQUERADE + друзья в других сетях помогут построить мир независимо от желания вашего провайдера ;)

Offline Xray_Linux_Root

  • Sr. Member
  • ****
  • Posts: 296
  • Karma: +2/-0
Ну вот, уже лучше.

1. http://ymettier.free.fr/gmsgp/gmsgp.html
Code: [Select]
gmsgp --no_vscrollbar --no_hscrollbar "Чтобы закрыть окно нажмите кнопку Okay "

2. Или так:
Code: [Select]
kdialog --sorry "Внимание, передача/получение почты не завершена."

3. Или так:
http://xdialog.dyns.net/
Code: [Select]
#!/bin/bash
DIALOG=${DIALOG=Xdialog}

$DIALOG --title " Мой первый диалог" --clear \
        --yesno "Привет! Перед вами пример программы,\nиспользующей (X)dialog" 10 40
    
case $? in
    0)
    echo "Выбрано 'Да'.";;
    1)
    echo "Выбрано 'Нет'.";;
    255)
    echo "Нажата клавиша ESC.";;
esac
« Last Edit: July 07, 2007, 12:58:16 by Xray_Linux_Root »
Mandrake, ASPLinux, Slackware, RedHat, Fedora, Debian
Зачем M$ Exchange? Есть eGroupware!
-j MASQUERADE + друзья в других сетях помогут построить мир независимо от желания вашего провайдера ;)

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
Понеслась    
Мне как раз тоже понадобилось - я сделал для нашего программиста 1с системку. xmpp боты от сидящих в 1с цепляются к нашему eJabberd серваку и заходят в конфу. Он туда пишет сообщение и все боты его показывают. Так вот для сидящих на линухах я тоже искал такую пограммку, но ушел куда то не в ту степь.
Теперь, вдохновившись примерами нашел тут же kmessage
Потом еще раз переситал предыдущий пост, и решил использовать kdialog.
« Last Edit: July 07, 2007, 13:48:18 by deepwalker »

Offline Xray_Linux_Root

  • Sr. Member
  • ****
  • Posts: 296
  • Karma: +2/-0
Quote from: deepwalker
Понеслась    

Ставим переход Томских предприятий на свободно-распространяемое программное обеспечение на поток!
« Last Edit: July 07, 2007, 14:03:34 by Xray_Linux_Root »
Mandrake, ASPLinux, Slackware, RedHat, Fedora, Debian
Зачем M$ Exchange? Есть eGroupware!
-j MASQUERADE + друзья в других сетях помогут построить мир независимо от желания вашего провайдера ;)

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
На поток : )) Чтобы поставить такое на поток, хватит ли достаточно квалифицированных админов?


Проблема, углубленное:
в rdesktop на весь экран kdialog вообще не стартует, kmessage не перекрывает. Что делать?

Offline Xray_Linux_Root

  • Sr. Member
  • ****
  • Posts: 296
  • Karma: +2/-0
Quote from: deepwalker
Проблема, углубленное:
в rdesktop на весь экран kdialog вообще не стартует, kmessage не перекрывает. Что делать?


1. В смысле (в rdesktop на весь экран) ? VNC?

2. в rdesktop на весь экран kdialog вообще не стартует
Как происходит запуск?
Если например попробовать ручками из консоли/терминала?
« Last Edit: July 07, 2007, 15:34:23 by Xray_Linux_Root »
Mandrake, ASPLinux, Slackware, RedHat, Fedora, Debian
Зачем M$ Exchange? Есть eGroupware!
-j MASQUERADE + друзья в других сетях помогут построить мир независимо от желания вашего провайдера ;)

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
При чем тут vnc? : )) написано же - rdesktop.
Запуск:

sleep 10 && kdialog --sorry "kukukukukuku"

После этого раскрываем окно rdesktop на весь экран, отсчитываем 20 секунд (окна ессно нет на экране), сворачиваем окно, смотрим в консоль.
Code: [Select]
Failed to open device
upd
---
Впрочем если запустить kdialog просто сразу из консоли, он пишет то же самое, но окно показывается.

А вот что особенно интересно. Как раз во время эксперимента я выдернул usb bluetooth, и kde мне написал, что я нехороший человек : )) Велезло поверх rdesktop.
Я находил как такие выползающие штуки делать (сврху например вылезает надпись, потом пропадает), но она ведь исчезнет. А нужно чтоб вылетело сообщение, вылетело в любом случае, и никуда не убралось до нажатия кнопки ок.
« Last Edit: July 07, 2007, 16:13:54 by deepwalker »

Offline Xray_Linux_Root

  • Sr. Member
  • ****
  • Posts: 296
  • Karma: +2/-0
Quote from: deepwalker
При чем тут vnc? : )) написано же - rdesktop.
Запуск:

sleep 10 && kdialog --sorry "kukukukukuku"

После этого раскрываем окно rdesktop на весь экран, отсчитываем 20 секунд (окна ессно нет на экране), сворачиваем окно, смотрим в консоль.
Code: [Select]
Failed to open device

В консоли дать команду echo $DISPLAY ?

у меня эта переменная равна :0.0

Т.е. kdialog --sorry "kukukukukuku" равно kdialog --display :0.0 --sorry "kukukukukuku" для первой консоли X-сервера.

И если мне не изменяет память rdesktop - терминал-клиент к вендовому терминал-серверу.... а на венду только широковещательные сообщения слать при помощи smbclient.


З.Ы. Интересный параметр --help-all
Mandrake, ASPLinux, Slackware, RedHat, Fedora, Debian
Зачем M$ Exchange? Есть eGroupware!
-j MASQUERADE + друзья в других сетях помогут построить мир независимо от желания вашего провайдера ;)

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
Ты плохо читаешь. И считаешь себя умнее собеседника, это плохо...

Offline Terminator

  • Jr. Member
  • **
  • Posts: 80
  • Karma: +0/-0
    • Motor-club
Есть специальная либа как раз для вашего случая, libnotify. Уже куча прог её пользуют.
В комплекте есть notify-send.
Александр.

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
Благодарю.
Тем более кошерный путь - стандарт уведомлений : ))
А самое главное - перекрывает окно rdesktop'а. В общем все что мечталось.