Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: jak předat zprávu uživateli, který nemá otevřený terminál?  (Přečteno 2755 krát)

teodeo

  • Návštěvník
  • Příspěvků: 9
Přihlásím se na vzdálený počítač přes ssh. Potřebuji předat zprávu uživateli, který na něm právě pracuje, ale nemá otevřený terminál - je přihlášen jen v grafickém rozhraní. Jak to mám udělat? Hledal jsem na netu, ale našel jsem jen mesg, talk a wall.

emil54

  • Host
Re: jak předat zprávu uživateli, který nemá otevřený terminál?
« Odpověď #1 kdy: 25 Srpna 2008, 01:27:05 »
Posli mu SMS ;)
Spis by mne zajimalo, jak mu ji posilas, kdyz ten terminal ma pustenej...

Tomáš Jančík

  • Stálý člen
  • **
  • Příspěvků: 1179
    • TomášJančík.net
Re: jak předat zprávu uživateli, který nemá otevřený terminál?
« Odpověď #2 kdy: 25 Srpna 2008, 01:43:17 »
Posli mu SMS ;)
Spis by mne zajimalo, jak mu ji posilas, kdyz ten terminal ma pustenej...

prave pomoci tech nastroju mseg, talk a wall (osobne teda znam jenom talk)

2 teodeo: a kdyz mu zkusis napsat pres talk tak se mu asi ten terminal neotevre, co???

teodeo

  • Návštěvník
  • Příspěvků: 9
Re: jak předat zprávu uživateli, který nemá otevřený terminál?
« Odpověď #3 kdy: 26 Srpna 2008, 21:02:21 »
Ne, právě že se neotevře (když zkusím wall).

A talk mi nefunguje. Je to stejný problém jako na http://ubuntuforums.org/showthread.php?t=225426
....Error on read from talk daemon: Connection refused. Press any key...

Zatím se mi to nepodařilo vyřešit. Našel jsem nějaký popis http://ubuntuforums.org/showthread.php?p=1398433#post1398433, ale xined nemám zatím nainstalovaný. Je to ono?

nettezzaumana

  • Host
Re: jak předat zprávu uživateli, který nemá otevřený terminál?
« Odpověď #4 kdy: 26 Srpna 2008, 22:31:37 »
no, to je jednoduchy jako facka :D ..

co takhle treba:: DISPLAY=:0 xterm -e 'echo ahoj && sleep 10' // ;)

teodeo

  • Návštěvník
  • Příspěvků: 9
Re: jak předat zprávu uživateli, který nemá otevřený terminál?
« Odpověď #5 kdy: 03 Září 2008, 20:59:07 »
Asi to nebude tak jednoduché. Upozorňuji, že jsem na tom kompu přihlášen přes ssh. Ten příklad mi nefunguje. Hlásí mi to
Kód: [Vybrat]
$ DISPLAY=:0 xterm -e 'echo ahoj && sleep 10'
No protocol specified
xterm Xt error: Can't open display: :0

nettezzaumana

  • Host
Re: jak předat zprávu uživateli, který nemá otevřený terminál?
« Odpověď #6 kdy: 03 Září 2008, 22:15:42 »
Asi to nebude tak jednoduché. Upozorňuji, že jsem na tom kompu přihlášen přes ssh. Ten příklad mi nefunguje. Hlásí mi to
Kód: [Vybrat]
$ DISPLAY=:0 xterm -e 'echo ahoj && sleep 10'
No protocol specified
xterm Xt error: Can't open display: :0
<< uff .. tak se asi display nejmenuje ':0' :) heh. to jej jak s malym ditetem .. jak se jmenuji spustena Xka zjistis treba z vypisu ::

ps faux | grep X

muj postup funguje naprosto nadherne, overil jsem ho temito kroky na dvou ruznych uzivatelich ::

a) useradd -d /tmp/xx -m testuser // vytvorim si uzivatele testuser
passwd testuser // nastavim mu heslo

b) // zmacknu ctrl+alt+F5 a prihlasim se jako testuser a zadam
X :1.0 & // vytvorim dalsi instanci xserveru na /dev/tty8, a prepnu se z5 pomoci ctrl+alt+F5
xauth add :1.0 . `mcookie` & // magic cookies pro nase nova xka
DISPLAY=:1.0 xterm & // hodim si tam jako testuser xterm

c) // prepnu se pomoci ctrl+alt+F7 do mych normalnich X a zadam (uz zase jako normalni uzivatel ntz)::
ps faux | grep X // to mi ukaze ::
Citace
nettezzaumana@kokina:~> ps faux | grep X
root      2508  4.6  5.2  58880 54536 tty7     RLs+ 21:51   0:33  \_ /usr/bin/Xorg -br -nolisten tcp :0 vt7 -auth /var/lib/xdm/authdir/authfiles/A:0-i4ZIlh
1000      2946  0.0  0.0   3804   484 ?        Ss   21:52   0:00          \_ /usr/bin/gpg-agent --sh --daemon --write-env-file /home/nettezzaumana/.gnupg/agent.info /usr/bin/ssh-agent /bin/bash /etc/X11/xinit/xinitrc
1000      2947  0.0  0.0   5612   668 ?        Ss   21:52   0:00          \_ /usr/bin/ssh-agent /bin/bash /etc/X11/xinit/xinitrc
root      4160  2.7  2.6  34700 27700 tty8     SLs+ 22:02   0:01      \_ X :1.0
1000      4241  0.0  0.0   3064   712 pts/2    S+   22:03   0:00      \_ grep X
// z toho je patrne, ze u me v suse se jmenuje nulta instance Xserveru :0 a bezi mi jeste jedna aka :1.0, takze zadam
DISPLAY=:1.0 xclock & // a prepnu se pomoci ctrl+alt+F8 do xsek testusera a hle, je tam xclock .. ;)

.. takze proc by to neslo ;)

nettezzaumana

  • Host
Re: jak předat zprávu uživateli, který nemá otevřený terminál?
« Odpověď #7 kdy: 04 Září 2008, 16:40:47 »
^^^^ err .. pres ssh to vazne nejde

teodeo

  • Návštěvník
  • Příspěvků: 9
Re: jak předat zprávu uživateli, který nemá otevřený terminál?
« Odpověď #8 kdy: 07 Září 2008, 22:42:49 »
Nedivím se, že to nejde. Aby mi někdo přes ssh najednou otevřel okno konzole na mém desktopu, tak to by se mi nelíbilo. Podle mého názoru to je i proti bezpečnostním pravidlům. Nicméně existuje notifikační služba, která vypisuje různá hlášení na desktop. Je to notification-daemon a lze mu poslat jakoukoliv zprávu pomocí příkazu notify-send. Ten se nachází v balíčku libnotify-bin.

Kód: [Vybrat]
notify-send -i /usr/share/icons/hicolor/48x48/apps/gnome-brightness-applet.png -t 3000 -u normal BRIGHTNESS "Increasing brightness..."
notify-send -i face-plain -t 1500 -u normal --hint=int:'x':340 -h int:'y':680 Brightness "Brightness <i>UP</i>"

Příkaz notify-send funguje dobře na mém vlastním desktopu, ale ne už pro desktop jiného uživatele. Předpokládám, že se zde zase naráží na bezpečnostní problém a oprávnění:
Kód: [Vybrat]
ssh user@somewhere
user@somewhere$ notify-send -i face-smile Test 'zkouška spojení'
libnotify-Message: Unable to get session bus: dbus-launch failed to autolaunch D-Bus session: Autolaunch error: X11 initialization failed.

Nevíte jak na to?

teodeo

  • Návštěvník
  • Příspěvků: 9
Re: jak předat zprávu uživateli, který nemá otevřený terminál?
« Odpověď #9 kdy: 07 Září 2008, 22:59:32 »
Ještě jsem zapomněl: Když si zamknete desktop, tak je tam i tlačítko "Leave message", do kterého vám mohou ostatní lidé, co si k tomu kompu sednou, napsat zprávu. Tak to bych přesně potřeboval. Jestlipak tam lze tu zprávu vložit i přes konzoli?

teodeo

  • Návštěvník
  • Příspěvků: 9
Re: jak předat zprávu uživateli, který nemá otevřený terminál?
« Odpověď #10 kdy: 11 Září 2008, 00:27:43 »
No, tak jsem to nakonec vyřešil pomocí notify-send a roury. Na straně uživatele se po jeho zalogování spustí skript, který vytvoří rouru a naslouchá na ní. Když něco přijde, tak to předá příkazu notify-send.

/usr/local/bin/notify-from-pipe:
Kód: [Vybrat]
#!/bin/bash
# dependencies:
# sudo apt-get install libnotify-bin

# vytvořím rouru
mkfifo /tmp/roura

# přidám práva, abych do ní mohl zapisovat
chmod go+w /tmp/roura

# spustím naslouchací smyčku
while [ 1 ]
do
    notify-send -i face-smile 'From boss:' "`cat /tmp/roura`"
done

Pak už jenom stačí zapisovat do roury:
Kód: [Vybrat]
$ ssh user@comp
user@comp$ echo 'Moje zpráva' > /tmp/roura

Na to jsem si napsal malého klienta:
/usr/local/bin/notify-client:
Kód: [Vybrat]
#!/bin/bash
history -r .notify_history
while [ 1 ]
do
    echo -n "->: "; read -e message
    if [ -z "$message" ]; then
        break
    fi
    history -s "$message"
    echo $message > /tmp/roura
done
history -w .notify_history

Naslouchací skript se spouští pod uživatelem, kterému se mají zprávy zobrazovat. Do jeho profilu se vloží buďto pomocí gnome-session-properties (systém / volby / sezení: Programy po přihlášení - přidat) a nebo, když v mém případě mám přístup jen přes ssh, lze rovnou nakopírovat:
Kód: [Vybrat]
cat > /home/user/.config/autostart/notify-from-pipe.desktop
[Desktop Entry]
Type=Application
Encoding=UTF-8
Version=1.0
Name=Notify from pipe
Comment=Příjem hlášení z roury
Exec=notify-from-pipe
X-GNOME-Autostart-enabled=true

Ve finále jsem si s těmi skripty ještě trochu pohrál a přidal i ovládání notify ikony (v systému jsem našel 15 různých smajlíků).

Deafboy

  • Návštěvník
  • Příspěvků: 77
Re: jak předat zprávu uživateli, který nemá otevřený terminál?
« Odpověď #11 kdy: 03 Srpna 2009, 12:51:12 »
Zdravím,
V prípade že sa chcem vyhnúť zdĺhavému prihlasovaniu na stroj ktorému chcem poslať správu, malo by teoreticky fungovať niečo takéto:

Kód: [Vybrat]
#!/bin/bash
history -r .notify_history
while [ 1 ]
do
    echo -n "->: "; read -e message
    if [ -z "$message" ]; then
        break
    fi
    history -s "$message"
    ssh deafboy@192.168.1.7 'echo $message > /tmp/roura'
done
history -w .notify_history

Autentifikácia prebieha pomocou kľúča (bez zadávania hesla)
Notifikácia sa v tomto prípade zobrazí, ale bez požadovaného textu.

edit________________________________
Tak som zistil že text sa zrazu nezobrazuje ani keď správu posielam cez terminál na tom PC.
Niekedy sa správa zobrazí, no väčšinou vyskočí prázdne okno (je tam len ikonka a "From Boss")
« Poslední změna: 03 Srpna 2009, 14:34:07 od Deafboy »
Ubuntu som prestal pouzivat vzhladom na jeho bugy kazdodenne, no sem-tam rad zabludim na toto forum a som este radsej ked viem pomoct

 

Provoz zaštiťuje spolek OpenAlt.