在 Mac 终端本地捕获远程输出

Sea*_*ris 6 linux mac ssh terminal.app

我想要本地编程访问 Mac 终端中的 ssh 输出。

首先,我尝试将每个命令的输出重定向到一个文件。该文件是完美的,但当然它在远程服务器上,每个命令输出的 sftp 似乎有点……沉重。

接下来,我尝试使用 Applescript 终端,但它只能访问选项卡中当前可见的文本(即,如果输出的一半已经滚动到视线之外,则不会返回 - 无用)。

最后,我尝试将 ssh 管道传输到 tee(例如 ssh user@host | tee output.txt)。这几乎奏效了。我在本地文件中有输出,但是混入了很多不需要的字符。例如,每次我按退格键时,文件中都会有一个 ^H。还有像“[0m[K”这样的文本,它更难摆脱。

如何在本地干净地获取此 ssh 输出?

Joh*_*web 3

用于script制作终端会话的打字稿。

然后用sed它来消毒。

例如;

% script mysession

% ssh user@host

[some stuff]

% exit
Script done, output file is mysession

% sed -e '
s/'`echo "\033"`'\[[[:digit:]]*\(;[[:digit:]]*\)*[[:alpha:]]//g; # ANSI Escape sequences (perhaps over-generalised)
s/[^[:print:]]//g; # Non-printable
' mysession > mysession.txt
Run Code Online (Sandbox Code Playgroud)

您现在应该能够mysession.txt在没有ANSI 转义码和其他不可打印字符的情况下进行阅读。

^H可以增强此功能以删除a之前的字符,但您指定您不希望这样做。