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 xsel
apt 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 剪贴板并从中粘贴。它还附带了一个小型winclip
shell 脚本,可用于从目标 Linux/Unix 主机访问 Windows 剪贴板。
该补丁适用于 PuTTY 0.53b(已有十年历史),已重新升级至 PuTTY 0.60这里但这仍然是旧版本。您可能需要做一些工作来使其适应最新的PuTTY(撰写本文时为0.70),但它可能无需任何更改即可应用,因为PuTTY代码库目前基本稳定。所以也许这对你有用。
该补丁不太可能被官方 PuTTY 接受,因为转义序列是自定义的,并不是任何标准的一部分,因此不太可能在其官方发行版中得到 PuTTY 的官方支持。
答案4
Windows 端的 PuTTY 允许复制屏幕上的文本通过一组快捷方式。如果命令的输出太大,请考虑nc
在 Ubuntu 服务器和ncat
Windows 客户端上使用(可从 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
客户端。