コマンドラインに「画面共有」がありますか?

コマンドラインに「画面共有」がありますか?

私がリモートサーバーにログインし、他の人が同じサーバーにログインしている場合は、コマンドラインを介して他の人に「私を監視」させる方法はありますか?

もちろん、時々ターミナルスクロールバックバッファをコピーして貼り付けてファイルにダンプする/tmpこともできますcat。色はありませんが、私が言う内容とほぼ同じです。

これは追加の作業を必要としないため、「画面共有」の一般的な意味とは非常に異なります。ネットワークトラフィックがまったくありません。ローカルリソースのみがあります。 (すべてログインしています。)

私はすでにそれを持っています噴水これは数ヶ月以内に発生した場合に非常に便利です。

可能ですか?どうすればいいですか?

答え1

多くの人がそれを提案しましたscreen。画面が少し古くてひどいです。私はお勧めしますtmux

セッションを作成するには:tmux new -s <name>

その後、他の人がセッションに接続するには、実行してtmux a -t <name>名前を同じにしてください。

Ctrl-thenをクリックしてbセッションを終了できますd

これはすべて同じサーバー/コンピューターで実行する必要があります。

答え2

私はこのオプションを見つけましたman script

-f      Flush output after each write. This is nice for telecooperation:
        One person does ‘mkfifo foo; script -f foo’ and another can
        supervise real-time what is being done using ‘cat foo’.

まだこれを持って遊んでいませんが、そうだと思います。正確に私は何を探していますか?これで遊んで色などが届くか確認することもできます。

答え3

彼女がどの端末を使用しているかを知っていれば、tee出力を他の端末にパイプすることができます。

次のwコマンドを使用して端末を検索できます。

user4@myubuntu:~$ w
 16:41:36 up 13 min,  4 users,  load average: 0.55, 0.60, 0.46
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
user1    :0       :0               16:28   ?xdm?   6:28   0.03s gdm-session-worker [pam/gdm-password]
user2    pts/1    :0               16:38    2:46   0.04s  0.04s bash
user3    pts/7    :0               16:38    1:32   0.09s  0.09s bash
user4    pts/8    :0               16:41    4.00s  0.05s  0.00s w

私はuser4ターミナルにいますpts/8。出力をuser2端末に送信するには、pts/1次のように新しいシェルを起動します。

$ bash | tee /dev/pts/1

その後、次のコマンドのすべての出力(入力ではない)がにコピーされますuser2。完了したら、クリックしてCtrl-Dシェルを終了します。

他のユーザーにメッセージまたはテキストを送信するには、次のwriteコマンドを使用できます。

$ write <username>
hello, are you there ? 
Ctrl-d

答え4

まあ、画面を共有することはscreen可能ですが、思ったよりも複雑です。

  1. screen他のユーザーのソケットにアクセスするには、uidをrootに設定する必要があります。 (誰かがこれをsetgidで使用できると思うかもしれませんが、そのようにコンパイルされているかどうかを確認していませんscreen。)
  2. 文書マルチユーザーコマンドの場合は少し単純なので、構成はそれほど単純ではありません。また、他のユーザーにACLを設定できますが、そのオプションは存在しないようです。印刷現在のACL。

つまり、私はそれを働かせ、特定の「作業」の価値を達成することができました。

まず、十分な権限があることを確認し、次の権限を変更してください/var/run/screen

chmod u+s /usr/bin/screen
chmod 755 /var/run/screen

次に、いくつかの設定コマンドをファイルにまとめます。

$ cat shared.screen.rc
multiuser on
aclumask ?-wx
aclumask ??-wx
addacl foo
aclchg foo -x ?
aclchg foo +x detach,help,next,prev,windows,info,select

multiuserマルチユーザーモードを有効にし、aclumask基本アクセスをすべてのユーザーに制限してから、ユーザーaddaclへの(すべての)アクセスを許可しますfoo。これらのコマンドは、すべてのコマンド()への実行()アクセスをaclchg削除し、いくつかのポジティブコマンドを再び許可します。-x?

次に、を実行してユーザーが接続できる画面を作成しますscreen -c shared.screen.rcfoo

foo$ screen -ls bar/
There is a suitable screen on:
        18839.pts-2.test        (08/21/16 22:09:07)     (Multi, detached)
foo$ screen -r bar/

画面に書き込み、ほとんどのコマンドを使用するとエラーが発生します。しかし、コピーモードは機能しているようです。また、スプラッシュ画面はscreen -rd bar/不可能だと思っても、所有していないユーザーが追い出したときに所有したユーザーを追い出す。screen -RRDまた、機能し、元のユーザーをログアウトします。pow_detachそしてdetach(2人目のユーザーにとっては興味深いでしょう)を無効にしてもそれには影響しません。興味深い。

もちろん、気にせずに他のユーザーが画面を乱雑にすることを嬉しく思っていれば、multiuser onandを使用すればaddacl foo十分です。私はあなたがこれをしなければならないと言うものではありません。

関連情報