私がリモートサーバーにログインしていて、他の誰かが同じサーバーにログインしている場合、コマンドラインを介して「肩越しに見渡す」方法はありませんか?
もちろん、ターミナルのスクロールバックバッファを定期的にコピーして貼り付け、/tmp
のファイルにダンプすることもできます。また、そのファイルをcat
することもできます...これは私が話していることに近いものです。 、色はありませんが。
これは、「画面共有」の一般的な意味とは大きく異なります。これは、追加のnetworkトラフィックがまったく含まれず、ローカルリソースのみが含まれるためです。 (両方ともすでにログインしています。)
私はこれが非常に有用だったであろうわずか数ヶ月でスコアのケースを経験しました。
これは可能ですか?どうすればいいですか?
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’.
私はまだこれで遊んでいませんが、それは正確に私が探していたもののように見えます。それで遊ぶことで、色なども伝わってくるかどうかがわかります。
多くの人がscreen
を提案しています。画面はやや古く、かなり悪いです。 tmux
をお勧めします。
セッションを作成するには、tmux new -s <name>
を実行するだけです。
次に、別の人をそのセッションに接続させるには、tmux a -t <name>
を実行するだけで、名前が同じになるようにします。
セッションを終了するには、を押します。 Ctrl-b その後 d。
これはすべて同じサーバー/マシンで実行する必要があることに注意してください。
他の人が使用している端末がわかっている場合は、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
コマンドscreen
があります。これがまさにあなたが探しているものだと思います。 https://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/
あなたにとって重要な情報は、複数のユーザーが同じ画面に添付できるということです
kibitz
-2人以上が1つのシェルと対話できるようにします。
これがあなたが探しているものだと思います!
実行
yum install tcl expect
kibitzを入手して使用するために%user
。
さて、screen
と画面を共有することは可能ですが、私が思っていたよりも毛深いです。
screen
をrootにsetuidする必要があります。 (これはsetgidだけで動作するようにできると思うかもしれませんが、screen
をそのようにコンパイルできるかどうかは確認しませんでした。)そうは言っても、「仕事」のいくつかの価値のために、私はそれを機能させることができました。
まず、十分な権限があることを確認し、/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.rc
を実行して、ユーザーfoo
がアタッチできる画面を作成します。
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 on
とaddacl foo
を使用するだけで十分です。私があなたがすべきだと言っているわけではありません。