script记录整个对话

script记录整个对话

xclip/xsel 需要 X11。

当我使用 Putty 从 Windows 系统转到 Linux(未安装 X11)时,有没有 xsel 或 xclip 的替代品?

我想将完整的 shell 命令输出通过管道传输到剪贴板,然后将其粘贴到 Windows 框中的应用程序。我不想在这些 Linux 服务器上安装 xsel 和 xclip 所需的所有 X11 依赖项。

答案1

剪贴板本身是 X11 的一个功能,因此,如果任何地方都没有运行任何 X11 服务器实例,您将无法使用它。有关详细信息,请参阅下文。

但是,xclip/xsel没有 X11 服务器作为依赖项,它们只需要安装一些客户端库。xsel但是,如果您希望安装尽可能少的软件包,则应该安装,因为它的依赖项比 少得多(比较和xclip的输出)。apt depends --recurse --important xselapt depends --recurse --important xclip

回到 X11 服务器。您说您不想在无头 Ubuntu 服务器上安装完整的图形 X11 服务器堆栈,这是没有必要的。但是,如果您想使用其功能(如剪贴板),则需要在本地客户端上运行 X11 服务器。

在 Linux 桌面客户端上这没有问题,因为通常你已经在那里运行了 X11,但在 Windows 上则没有。幸运的是,Windows 似乎也有一个小型的 X11 服务器版本,称为西明

一旦运行并配置完毕,您就应该能够通过 SSH(使用 PuTTY)将本地 X11 会话转发到无头服务器。然后,您可以使用 egxsel与其交互并访问本地剪贴板。

有关如何设置 Xming、PuTTY 和 SSH 服务器以进行 X11 转发的更多详细信息,请参阅以下帖子:

答案2

script记录整个对话

编译后的程序script是 Ubuntu 存储库“main”中的程序包中的一个程序bsdutils。它将整个对话保存在文本屏幕、终端窗口或远程连接中。您可以script在您的服务器上运行。

日志文件的默认名称位于typescript您启动的目录中,但如果您使用参数(别名参数)script启动,则可以选择其他名称script

script my-script.log

演示示例

启动script并运行一些命令:

sudodus@bionic64 ~/test $ LANG=C script my-script.log
Script started, file is my-script.log
sudodus@bionic64 ~/test $ echo 'Hello World'
Hello World
sudodus@bionic64 ~/test $ pwd
/home/sudodus/test
sudodus@bionic64 ~/test $ ls
my-script.log
sudodus@bionic64 ~/test $ exit
exit
Script done, file is my-script.log

检查日志文件:

sudodus@bionic64 ~/test $ cat my-script.log 
Script started on 2019-01-21 19:50:22+0100
sudodus@bionic64 ~/test $ echo 'Hello World'
Hello World
sudodus@bionic64 ~/test $ pwd
/home/sudodus/test
sudodus@bionic64 ~/test $ ls
my-script.log
sudodus@bionic64 ~/test $ exit
exit

Script done on 2019-01-21 19:50:52+0100
sudodus@bionic64 ~/test $ 

答案3

如果你选择使用修改后的PuTTY,你可能需要看看此补丁到PuTTY,它添加了自定义转义序列以复制到 Windows 剪贴板并从中粘贴。它还附带了一个小型winclipshell 脚本,可用于从目标 Linux/Unix 主机访问 Windows 剪贴板。

该补丁适用于 PuTTY 0.53b(已有十年历史),已重新升级至 PuTTY 0.60这里但这仍然是旧版本。您可能需要做一些工作来使其适应最新的PuTTY(撰写本文时为0.70),但它可能无需任何更改即可应用,因为PuTTY代码库目前基本稳定。所以也许这对你有用。

该补丁不太可能被官方 PuTTY 接受,因为转义序列是自定义的,并不是任何标准的一部分,因此不太可能在其官方发行版中得到 PuTTY 的官方支持。

答案4

Windows 端的 PuTTY 允许复制屏幕上的文本通过一组快捷方式。如果命令的输出太大,请考虑nc在 Ubuntu 服务器和ncatWindows 客户端上使用(可从 nmap.org 获得)。

在 Ubuntu 上,执行

$ command > output.txt
# port 1234 is just an example, you can use your own port of choice
$ nc -N -l 1234 < output.txt

在 Windows 上,使用ncat

PS C:\Users\Admin> & 'C:\Program Files (x86)\Nmap\ncat.exe' <ip of the server> 1234 --output foo.txt

服务器上保存的输出将被传输到foo.txt客户端。

相关内容