Linux: Bagaimana cara mengirim pesan ke pengguna lokal yang masuk ke X11?
10
Apakah mungkin untuk mengirim pesan (jendela sembulan atau sesuatu) ke pengguna lokal yang masuk ke X (xdm, fluxbox) dari konsol? Sebagai contoh: user1dicatat dan menggunakan X / fluxbox, user2masuk ke kotak yang sama dengan ssh ke konsol. Sekarang - apa yang user2harus dilakukan untuk mengirim pesan user1?
Jika penerima ( user1dalam contoh saya) masuk ke X11, dan belum membuka xtermatau terminal lain - apakah akan wallberfungsi juga? Saya pikir itu user1tidak akan melihat pesan.
marioosh
Saya memperbarui jawaban saya untuk memasukkan solusi 'xmessage'. Itu akan menunjukkan jendela kecil kepada pengguna, terlepas dari apakah mereka memiliki terminal terbuka.
mjk
1
Secara kebetulan, 'apropos' adalah utilitas yang berguna untuk diketahui; itu mencari halaman manual untuk teks yang Anda berikan padanya. Coba jalankan 'pesan yang tepat' dan lihat apa yang dikembalikan.
mjk
Saya tahu xmessagetetapi bagaimana menjalankannya user1dan membuka jendela kecil ini user2di layar? apakah itu mungkin?
marioosh
@ marioosh Saya juga ingin tahu bagaimana melakukannya. Apakah Anda pernah mendapatkannya?
2
Sebagai aturan, sesi X11 biasanya dimulai dalam mode "pribadi", jadi Anda memerlukan salah satu dari dua hal: entah, kerjasama dari user2untuk memungkinkan Anda mengakses layar mereka, atau hak pengguna super untuk "menerobos" ke layar mereka.
BERBAHAYA: Perlu diingat, setelah Anda memiliki akses ke layar mereka, Anda juga bisa melakukan hal-hal seperti menangkap penekanan tombol (berpotensi termasuk kata sandi) dan mengambil tangkapan layar, jadi ini adalah risiko keamanan yang besar.
Dalam kebanyakan kasus, lebih baik menggunakan alat pesan atau program obrolan untuk hal-hal ini.
Peringatan:
Coöperating
Jika user2ingin mengizinkan user1untuk mengakses layar mereka, maka pertama user2- tama harus mengeluarkan perintah seperti:
xhost +si:localuser:user1
Ini berpotensi ditambahkan ke skrip start-up semacam; Saya tidak tahu Fluxbox, tapi saya berasumsi itu memiliki rcatau memulai sesi hook.
Setelah ini dikeluarkan, user1kemudian dapat menulis ke user2tampilan, jika mereka dapat menemukannya.
Jika user2mengetahui hal ini, mereka selalu dapat mengirimkannya dengan user1cara lain.
Menemukan Tampilan pengguna lain
Pada workstation tipikal, tidak biasa memiliki lebih dari satu atau dua pengguna masuk; dalam hal ini, "menebak" bahwa tampilan yang Anda inginkan adalah 0, 1, atau mungkin 2 mungkin merupakan solusi yang bisa diterapkan.
Namun, untuk solusi yang lebih lengkap, mari kita asumsikan bahwa Anda memiliki mesin di mana sangat banyak pengguna dapat masuk, dan mencoba untuk menemukan yang Anda inginkan.
for proc in /proc/[0-9]*/
do
if [ Xorg = $(< $proc/comm ) ] 2>/dev/null && \
[ $(id -u user2) -eq $(< $proc/loginuid) ] 2>/dev/null
then
for subproc in $(
do
echo "user2 display=" $(perl -ne 'if (m,DISPLAY=(.*)\0,) { print $1 }' < $subproc/environ)
done
fi
done
kemudian, user1akhirnya (menggunakan nilai DISPLAY yang diperoleh di atas; Saya baru saja menulis di :14.0sini ...)
DISPLAY=:14.0 xmessage "Hello, user2"
Sebaliknya, Mengirim Pemberitahuan
Demi kelengkapan, berikut ini berfungsi di desktop Gnome, setidaknya. Saya tidak tahu apakah Fluxbox memiliki widget pemberitahuan.
DISPLAY=:14.0 notify-send "Hello, user2"
Ini memiliki lebih banyak opsi yang ramah pengguna untuk tampilan, dan mungkin akan muncul dengan cara yang lebih ramah di layar pengguna.
user1
dalam contoh saya) masuk ke X11, dan belum membukaxterm
atau terminal lain - apakah akanwall
berfungsi juga? Saya pikir ituuser1
tidak akan melihat pesan.xmessage
tetapi bagaimana menjalankannyauser1
dan membuka jendela kecil iniuser2
di layar? apakah itu mungkin?Sebagai aturan, sesi X11 biasanya dimulai dalam mode "pribadi", jadi Anda memerlukan salah satu dari dua hal: entah, kerjasama dari
user2
untuk memungkinkan Anda mengakses layar mereka, atau hak pengguna super untuk "menerobos" ke layar mereka.BERBAHAYA: Perlu diingat, setelah Anda memiliki akses ke layar mereka, Anda juga bisa melakukan hal-hal seperti menangkap penekanan tombol (berpotensi termasuk kata sandi) dan mengambil tangkapan layar, jadi ini adalah risiko keamanan yang besar.
Dalam kebanyakan kasus, lebih baik menggunakan alat pesan atau program obrolan untuk hal-hal ini.
Peringatan:
Coöperating
Jika
user2
ingin mengizinkanuser1
untuk mengakses layar mereka, maka pertamauser2
- tama harus mengeluarkan perintah seperti:Ini berpotensi ditambahkan ke skrip start-up semacam; Saya tidak tahu Fluxbox, tapi saya berasumsi itu memiliki
rc
atau memulai sesi hook.Setelah ini dikeluarkan,
user1
kemudian dapat menulis keuser2
tampilan, jika mereka dapat menemukannya.Jika
user2
mengetahui hal ini, mereka selalu dapat mengirimkannya denganuser1
cara lain.Menemukan Tampilan pengguna lain
Pada workstation tipikal, tidak biasa memiliki lebih dari satu atau dua pengguna masuk; dalam hal ini, "menebak" bahwa tampilan yang Anda inginkan adalah 0, 1, atau mungkin 2 mungkin merupakan solusi yang bisa diterapkan.
Namun, untuk solusi yang lebih lengkap, mari kita asumsikan bahwa Anda memiliki mesin di mana sangat banyak pengguna dapat masuk, dan mencoba untuk menemukan yang Anda inginkan.
kemudian,
user1
akhirnya (menggunakan nilai DISPLAY yang diperoleh di atas; Saya baru saja menulis di:14.0
sini ...)Sebaliknya, Mengirim Pemberitahuan
Demi kelengkapan, berikut ini berfungsi di desktop Gnome, setidaknya. Saya tidak tahu apakah Fluxbox memiliki widget pemberitahuan.
Ini memiliki lebih banyak opsi yang ramah pengguna untuk tampilan, dan mungkin akan muncul dengan cara yang lebih ramah di layar pengguna.
sumber
for subproc in
apa? Saya pikir skrip Anda rusak di sini.