Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Internet a sítě => Téma založeno: teodeo 23 Srpna 2008, 22:34:44

Název: jak předat zprávu uživateli, který nemá otevřený terminál?
Přispěvatel: teodeo 23 Srpna 2008, 22:34:44
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.
Název: Re: jak předat zprávu uživateli, který nemá otevřený terminál?
Přispěvatel: emil54 25 Srpna 2008, 01:27:05
Posli mu SMS ;)
Spis by mne zajimalo, jak mu ji posilas, kdyz ten terminal ma pustenej...
Název: Re: jak předat zprávu uživateli, který nemá otevřený terminál?
Přispěvatel: Tomáš Jančík 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???
Název: Re: jak předat zprávu uživateli, který nemá otevřený terminál?
Přispěvatel: teodeo 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?
Název: Re: jak předat zprávu uživateli, který nemá otevřený terminál?
Přispěvatel: nettezzaumana 26 Srpna 2008, 22:31:37
no, to je jednoduchy jako facka :D ..

co takhle treba:: DISPLAY=:0 xterm -e 'echo ahoj && sleep 10' // ;)
Název: Re: jak předat zprávu uživateli, který nemá otevřený terminál?
Přispěvatel: teodeo 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
Název: Re: jak předat zprávu uživateli, který nemá otevřený terminál?
Přispěvatel: nettezzaumana 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 ;)
Název: Re: jak předat zprávu uživateli, který nemá otevřený terminál?
Přispěvatel: nettezzaumana 04 Září 2008, 16:40:47
^^^^ err .. pres ssh to vazne nejde
Název: Re: jak předat zprávu uživateli, který nemá otevřený terminál?
Přispěvatel: teodeo 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?
Název: Re: jak předat zprávu uživateli, který nemá otevřený terminál?
Přispěvatel: teodeo 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?
Název: Re: jak předat zprávu uživateli, který nemá otevřený terminál?
Přispěvatel: teodeo 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ů).
Název: Re: jak předat zprávu uživateli, který nemá otevřený terminál?
Přispěvatel: Deafboy 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")