GNU/Linux >> Linux の 問題 >  >> Linux

Linux:X11 にログインしているローカル ユーザーにメッセージを送信するには?

xmessage ツールを使用すると、まさにそれが可能になります。内部にテキスト メッセージを含むポップアップ ウィンドウをユーザーに表示します。

例:user2 がボックスの BASH セッションにログインし、以下を発行します:

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

TSCH セッションにログインすると、次のようになります:

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

または、次の 2 つの方法のいずれかでターミナル セッションにメッセージを送信できます。

wall の使用 (=すべての [ユーザー] に警告)

マニュアルページから:
Wall は、現在ログインしているすべてのユーザーの端末に、ファイルの内容、またはデフォルトではその標準入力を表示します。

特定のユーザーをターゲットにする場合は、write を使用します .繰り返しますが、人は私たちに次のように言います:

write ユーティリティを使用すると、自分の端末から他のユーザーの端末に行をコピーすることで、他のユーザーと通信できます。


原則として、X11 セッションは通常「プライベート」モードで開始されるため、次の 2 つのいずれかが必要です:user2 からの協力 画面にアクセスできるようにするか、スーパーユーザー権限で画面に「侵入」できるようにします。

危険: 画面にアクセスできるようになると、キーストローク (パスワードを含む可能性がある) をキャプチャしたり、スクリーンショットを撮ったりすることもできるため、これは大きなセキュリティ リスクになることに注意してください。

ほとんどの 場合によっては、代わりにメッセージ ツールやチャット プログラムを使用することをお勧めします。

注意事項:

協力

user2 の場合 user1 を許可したい 画面にアクセスするには、最初に user2 次のようなコマンドを発行する必要があります:

 xhost +si:localuser:user1

これは、ある種の起動スクリプトに追加される可能性があります。 Fluxbox はわかりませんが、rc があると思います またはセッション開始フック。

これが発行されると、user1 user2 に書き込むことができます のディスプレイ (見つけられた場合)。

user2 の場合 はこれを認識しており、いつでも user1 に送信できます

別のユーザーのディスプレイを見つける

通常のワークステーションでは、1 人または 2 人以上のユーザーがログインすることはほとんどありません。その場合、必要な表示が 0、1、または 2 であると「推測」することが、実行可能な解決策になる可能性があります。

ただし、より完全な解決策として、非常に多くのユーザーがサインインできるマシンがあると仮定して、必要なユーザーを見つけてみてください。

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

次に、user1 最後に (上記で取得した DISPLAY 値を使用して、:14.0 と書きました) ここに…)

DISPLAY=:14.0 xmessage "Hello, user2"

代わりに通知を送信する

完全を期すために、以下は少なくとも Gnome デスクトップで動作します。 Fluxbox に通知ウィジェットがあるかどうかはわかりません。

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

これには、よりユーザーフレンドリーな表示オプションがあり、おそらくユーザーの画面上でよりフレンドリーな方法でポップアップ表示されます.


Linux
  1. Linuxでユーザー名を変更する方法

  2. Linux で Mailx を使用して外部ユーザーにメールを送信する方法

  3. Linux で特定のインターフェイスを介してマルチキャスト パケットを送信する方法

  1. Linuxでローカル、ユーザー、およびシステム全体の環境変数を設定および設定解除する方法

  2. Linux コンソールから Facebook メッセージを送信する方法 (コマンドライン)

  3. Linux のコマンドラインから socket.io websocket にメッセージを送信するにはどうすればよいですか?

  1. Linuxでユーザーをグループに追加する方法

  2. Linux (RedHat、Ubuntu、CentOS、Fedora) でログイン バナーを設定する方法

  3. Linux で raw メールメッセージを送信するには?