回答:
という1つのツールに出会いましたttylog
。こちらのCPAN で入手できるPerlプログラムです。いくつか注意点がありますが、1つは、誰かが私のボックスにssh 'することの一部として作成された端末に接続する方法しかわからないということです。もう1つは、昇格した特権(つまり、rootまたはsudo)で実行する必要があることです。
しかし、それは機能します!
まずTERM#1のボックスにsshします:
TERM#1% ssh saml@grinchy
この新しい端末のttyに注意してください。
TERM#1% tty
/dev/pts/3
次に、別のターミナル(TERM#2)で次のコマンドを実行します。
TERM#2% ttylog pts/3
DEBUG: Scanning for psuedo terminal pts/3
DEBUG: Psuedo terminal [pts/3] found.
DEBUG: Found parent sshd pid [13789] for user [saml]
TERM#1に戻ってstuffと入力すると、TERM#2に表示されます。
私が試したすべてのコマンド(top、lsなど)は、を使用して問題なく機能しましたttylog
。
gdb
は私が出会った最初のオプションでした。過去に自分で使用しましたが、少なくとも私にとってはハッキーです。これはあなたを助けてくれてうれしい!
確かにそうです。/ dev / vcs *および/ dev / vcsa *デバイスは、/ dev / tty *デバイス(仮想端末)に対応しています。F1 = tty1 = vcs1 / vcsa1など。vcs / vcsaは、「現在の」仮想端末のttyに似ています。
rootとして、これらのデバイスをcatするだけで(例:cat / dev / vcs2)、スナップショットを撮るなど、対応するVT(例:F2の/ dev / tty2)に何があるかを確認できます。vcsa *はvcs *と異なり、端末(画面)の寸法に関する情報が含まれています。ターミナルに割り当てられたメモリから収集された、画面に表示される文字のスナップショットにすぎないことに注意してください。したがって、見やすく、解析しやすい出力を期待しないでください。
欠点は、情報のフラッシュが速すぎると、キャプチャが困難になる可能性があることです。複数の画面いっぱいをたどる必要がある場合は、おそらくtail -f / dev / vcs1が機能します(自分で試していない)。最初に単純にファイルにリダイレクトするのが最も簡単な場合があります。端末の寸法は同じであるため、VT(F1〜F6)を使用して確認することをお勧めします。私の経験では、vcsa *ではなくvcs *デバイスを使用するのが最善です。
それがうまくいかない場合は、おそらく管理者が端末上のアクティビティを監視できるようにする「兄弟」パッケージの1つが機能する可能性があります。
PS:使用しているOSを尋ねるのを忘れました。これはLinux向けですが、おそらく他のOSにも同様のデバイスが存在します。デバイスのマンページから「仮想コンソールメモリ」を検索してみてください。
wlan0
、実際にはこのスクリプトが失敗する場所をデバッグしようとするcatch-22状況があります。usbハブを使用できないと仮定します...どういうわけかcharsを/ dev / tty1にパイプする方法はありますか?
/dev/tty1
ルートとしてパイプすることはできますが、これは文字を入力せずに画面に表示することです
tty
各ターミナルでコマンドを使用して、それらを識別します。
$ tty
/dev/pts/0
$ tty
/dev/pts/1
これらのTTYを想定して、最初の標準出力を2番目にリダイレクトするには、最初の端末でこれを実行します。
exec 1>/dev/pts/1
注:これで、すべてのコマンド出力がpts / 1に表示されます
pts / 0のデフォルトの動作stdoutを復元するには:
exec 1>/dev/pts/0
デモについては、このビデオを参照してください。
これは私のために働いた:
コンピューター "A"(つまり、制御される物理コンピューター)のキーボードを使用して、次を実行します。 screen -q
ssh
コンピューター「B」からコンピューター「A」に接続します。
sshセッションで、次のように入力screen -ls
して、接続するセッションIDを取得します(ttyを含む行の4桁)。
上記のセッションに接続するには:screen -x <session id>
... screen -ls
上記のコマンドから受け取ったセッションID番号を使用します。
いずれかの「セッション」で入力されたものは両方の「セッション」で発生するため、たとえば入力screen -d
すると両方のセッションが終了します。
screenでtty1を起動しなかったので、このスクリプトは役に立ちました:
上記のBaard Kopperudの回答を使用しました。「128」は私のtty1の1行です。スリープは適切な数値に設定できます。
#!/bin/bash
while true
do
sudo tail -c 128 /dev/vcs1 && echo ""
sleep 10
done
これをターミネーターで使用し、スクロールが1行のテキストになるように列のサイズを変更しました。
2つのターミナルを開きます。tty
それぞれを入力すると、IDが取得されます/dev/pts/nº
次に、最初に入力script -f /dev/pts/nºofSecondTerminal
し、2番目に入力すると反対script -f /dev/pts/nºofFirstTerminal
になり、リンクされます
おめでとうございます!両方の端末が同じものを出力および受信します。3番目が必要ですか?さて、組み合わせを勉強しましたか?6つのscript -f
コマンドが必要です。さらにtty?など...
screen
またはtmux
開始する前に常に検討してください。