Linux: X11'e giriş yapan yerel kullanıcıya nasıl mesaj gönderilir?


10

Konsoldan X (xdm, fluxbox) oturumu açmış olan yerel kullanıcıya mesaj (açılır pencere veya benzeri) göndermek mümkün müdür? Örneğin: user1günlüğe kaydedilir ve X / fluxbox kullanılarak, user2konsolda ssh ile aynı kutuya kaydedilir. Şimdi - user2mesaj göndermek için ne yapmalı user1?

Yanıtlar:


15

xmessageAracı tam olarak bunu sağlar; içinde kısa mesaj bulunan kullanıcılara bir açılır pencere sunun.

Örnek: user2, kutudaki bir BASH oturumunda oturum açar ve sorunları verir:

export DISPLAY=':0.0'
xmessage "some message here"

bir TSCH oturumuna giriş yaparsanız, şöyle bir şey olurdu:

setenv DISPLAY ':0.0'
xmessage "some message here'

Alternatif olarak, terminal oturumlarına iki yoldan biriyle mesaj gönderebilirsiniz:

Kullanılması wall(= tüm [kullanıcıları] uyarmak)

Man sayfasından:
Wall, dosyanın içeriğini veya varsayılan olarak standart girişini, şu anda oturum açmış olan tüm kullanıcıların terminallerinde görüntüler.

Belirli bir kullanıcıyı hedeflemek istiyorsanız kullanın write. Yine, insan bize şunu söyler:

Yazma yardımcı programı, terminalinizdeki satırları kendi satırlarına kopyalayarak diğer kullanıcılarla iletişim kurmanızı sağlar.


Bir alıcı ( user1örneğimde) X11'e giriş yaptıysa ve açılmadıysa xtermveya başka bir terminal varsa - da wallçalışır mı? Bunun user1mesajları görmeyeceğini düşünüyorum .
marioosh

Cevabımı 'xmessage' çözümünü içerecek şekilde güncelledim. Bu, bir terminalin açık olup olmamasına bakılmaksızın kullanıcıya küçük bir pencere gösterecektir.
mjk

1
Bu arada, 'apropos' bilmek yararlı bir araçtır; manuel sayfalarda ilettiğiniz metni arar. 'Apropos mesajı' çalıştırmayı deneyin ve ne döndürdüğüne bakın.
mjk

Biliyorum xmessageama nasıl çalıştırılır user1ve bu küçük pencerenin user2ekranında nasıl açılır ? hatta mümkün mü
marioosh

@marioosh Bunu nasıl yapacağımı da bilmek istiyorum. Hiç çözdün mü?

2

Kural olarak, X11 oturumları genellikle “özel” modda başlatılır, bu nedenle iki şeyden birine ihtiyacınız vardır: ya user2ekranlarına erişmenize izin veren işbirliği veya ekranlarına “girme” süper kullanıcı ayrıcalıkları.

TEHLİKE: Ekranlarına eriştiğinizde, tuş vuruşlarını (potansiyel olarak şifreler dahil) yakalama ve ekran görüntüsü alma gibi şeyler de yapabilirsiniz, bu nedenle bu büyük bir güvenlik riskidir.

In çoğu durumlarda yerine bunlar için bir mesajlaşma aracı veya sohbet programı kullanmak için tercih edilir.

Uyarılar bir yana:

işbirliği

Eğer user2istekleri izin vermek user1onların ekranına erişmek için, daha sonra ilk user2gibi bir komutu gerekir:

 xhost +si:localuser:user1

Bu, bir tür başlatma komut dosyasına potansiyel olarak eklenebilir; Fluxbox'ı bilmiyorum, ancak bir rcveya oturum başlatma kancası olduğunu varsayıyorum .

Bu yayınlandıktan user1sonra user2, bulabilirlerse ekranına yazabilir .

Bunun user2farkındaysa, her zaman user1başka bir şekilde gönderebilirler .

Başka bir kullanıcının Görüntüsünü Bulma

Tipik bir iş istasyonunda, birden fazla veya daha fazla kullanıcının oturum açması olağandışıdır; bu durumda, istediğiniz görüntünün 0, 1 veya belki 2 olduğunu “tahmin etmek” uygulanabilir bir çözüm olabilir.

Ancak, daha eksiksiz bir çözüm için, çok sayıda kullanıcının oturum açabileceği bir makineniz olduğunu varsayalım ve istediğinizi bulmaya çalışalım.

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

sonra, user1nihayet (yukarıda elde edilen DISPLAY değerini kullanarak; Az önce :14.0buraya yazdım …)

DISPLAY=:14.0 xmessage "Hello, user2"

Bunun yerine Bildirim Gönderme

Bütünlük adına, en azından Gnome masaüstünde aşağıdakiler çalışır. Fluxbox'ın bir bildirim widget'ı olup olmadığını bilmiyorum.

 DISPLAY=:14.0 notify-send "Hello, user2"

Bu, görüntüleme için çok daha kullanıcı dostu seçeneklere sahiptir ve muhtemelen kullanıcının ekranında daha dostça bir şekilde açılır.


for subproc inne? Bence senaryonuz burada bozuk.
Stéphane
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.