Answers:
我遇到了一个名为的工具ttylog
。这是对现有CPAN Perl程序在这里。它有两个警告,一个是我只能弄清楚如何附加到一个终端,这个终端是作为某人插入我的盒子的一部分而创建的。另一个是您必须以提升的特权(即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并输入内容,它将显示在TERM#2中。
我尝试过的所有命令(top,ls等)都可以正常使用,而不会发生意外ttylog
。
gdb
是我遇到的第一个选择,过去我自己使用过它,但至少对我来说这是很棘手的。很高兴这帮助了您!
的确是。/ dev / vcs *和/ dev / vcsa *设备对应于/ dev / tty *设备(虚拟终端)。F1 = tty1 = vcs1 / vcsa1,依此类推。对于“当前”虚拟终端,vcs / vcsa就像tty一样。
作为root用户,您可以为这些设备(例如cat / dev / vcs2)提供服务,并像拍摄快照一样查看相应VT(例如F2上的/ dev / tty2)上的内容。vcsa *与vcs *的不同之处在于,它们包含有关终端(屏幕)尺寸的信息。请注意,这只是屏幕上显示的字符的原始快照-从分配给终端的内存中收集的-因此不要指望有一个不错的,容易解析的输出。
缺点是,如果信息闪烁过快,则可能难以捕获。如果您需要遵循几个screenfull(可能自己没有尝试过),也许tail -f / dev / vcs1可以工作吗?首先简单地将其重定向到文件可能是最简单的。使用VT(F1-F6)进行查看也是一个好主意,因为端子将具有相同的尺寸。以我的经验,最好使用vcs *-而不是vcsa *-设备。
如果这样不起作用,也许允许管理员关注终端上的活动的“大兄弟”软件包之一可能会起作用。
PS:我忘了问您使用什么操作系统。这是针对Linux的,尽管其他操作系统上也可能存在类似的设备。尝试在设备的手册页中搜索“虚拟控制台内存”。
wlan0
,所以实际上我遇到了catch 22的情况,试图调试该脚本失败的地方。假设我无法使用USB集线器...是否可以通过某种方式将字符通过管道传输到/ dev / tty1?
/dev/tty1
作为根发送,但是所有要做的就是在屏幕上显示字符,而不是输入字符
tty
在每个终端中使用命令来标识它们:
$ tty
/dev/pts/0
$ tty
/dev/pts/1
假设这些TTY,要将第一个的stdout重定向到第二个,在第一个终端中运行:
exec 1>/dev/pts/1
注意:现在每个命令输出将在pts / 1上显示
恢复默认行为标准输出pts / 0:
exec 1>/dev/pts/0
观看此视频进行演示。
由于我没有使用屏幕启动tty1,因此该脚本有所帮助:
我使用了上面的Baard Kopperud的答案。“ 128”是我的tty1的1行。可以将睡眠设置为适当的数字。
#!/bin/bash
while true
do
sudo tail -c 128 /dev/vcs1 && echo ""
sleep 10
done
我在终止符中使用了它并调整了列的大小,因此滚动是一行文本。
打开两个端子。键入tty
每个,您将获得它的ID为/dev/pts/nº
然后在第一个中键入script -f /dev/pts/nºofSecondTerminal
,在第二个中执行相反的操作,script -f /dev/pts/nºofFirstTerminal
以便它们被链接
恭喜!两个终端输出和接收相同的东西。需要三分之一吗?好吧,你研究过组合吗?您将需要6个script -f
命令。甚至更多的tty?等等...
screen
或tmux
在启动可能要从另一个终端访问的命令之前。