如何从一个终端连接到另一个终端的输出?

如何从一个终端连接到另一个终端的输出?

我需要从虚拟终端连接到当前运行的终端 (tty1) 的输出并捕获它(运行 X 服务器)。

答案1

我遇到了这个名为ttylog.这是 CPAN 上可用的 Perl 程序这里。它有一些警告,其中之一是我只能弄清楚如何连接到作为某人 ssh'ing 进入我的盒子的一部分而创建的终端。另一个是您必须以提升的权限(即 root 或 sudo)运行它。

但它有效!

例如

首先在第 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]

现在返回术语#1 并输入内容,它将显示在术语#2 中。

终端数量

我尝试过的所有命令(top、ls 等)都可以使用ttylog.

答案2

看着:

man 1 script

例如:

script -f /dev/tty1

来源

答案3

它的确是。 /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) 来查看也可能是个好主意,因为端子将具有相同的尺寸。根据我的经验,最好使用 vcs* - 而不是 vcsa* - 设备。

如果这不起作用,也许允许管理员监视终端上活动的“老大哥”软件包之一可能会起作用。

PS:我忘了问你用的是什么操作系统。这是针对 Linux 的,尽管其他操作系统上也可能存在类似的设备。尝试在设备的手册页中搜索“虚拟控制台内存”。

答案4

这对我有用:

  • 使用计算机“A”(即要控制的物理计算机)上的键盘,运行:screen -q

  • 从计算机“B”连接ssh到计算机“A”。

  • 在 ssh 会话中,输入:screen -ls获取要连接的会话 ID(包含以下内容的行上的 4 位数字)终端)。

  • 使用以下命令连接到上述会话:screen -x <session id>... 使用从上述命令收到的会话 ID 号screen -ls

在任一“会话”中键入的任何内容都会在两个“会话”中发生,因此例如键入screen -d将退出两个会话。

相关内容