【问题标题】:How to copy output of command line from remote, to local clipboard via ssh如何通过 ssh 将命令行的输出从远程复制到本地剪贴板
【发布时间】:2016-08-25 06:51:33
【问题描述】:

我在校园里使用 HPC,它是 CentOS。我要求管理员在 HCP 中安装 xclip。但他说这会危及HPC。我不是root用户。我想知道是否有一种方法可以直接将命令行的输出复制到剪贴板而无需安装 xclip。我不想用鼠标来选择和复制。终端中有没有办法可以将输出重定向到剪贴板?

【问题讨论】:

  • 您是否通过 SSH 远程连接到 CentOS 服务器?
  • 如果您在 Windows 上使用 puTTy,您可以选择文本并右键单击它,然后将其复制到剪贴板。你用的是什么 SSH 客户端?
  • 你有gcc吗?你可以尝试在那里重新编译它。如果没有,你可以静态编译它并通过 scp 发送。
  • @JeffPuckettII。我在 mac 中使用终端。
  • Command shift c 可能会做到这一点。 Ctrl shift c 在 ubuntu 的终端中为我工作

标签: linux bash xclip


【解决方案1】:

这有点骇人听闻:

启动本地 xclip 服务器:

#!/bin/bash
while true
do nc -l localhost 8888 | xclip
done

使用反向端口重定向连接:

ssh <something something> -R 8888:localhost:8888

在远程写入您想要复制到该端口的内容。一些选项是:

echo "I WANT TO COPY THIS" | nc -C localhost 8888 #close on eof varies with version

或者

echo "I WANT TO COPY THIS" > /dev/tcp/localhost/8888

如果两者都失败,您仍然可以尝试使用 perl 或 python。

【讨论】:

  • 这是一个很好的答案。由于您已经在使用端口转发,请在本地运行nc -l localhost 8888,这样其他人就无法连接到您的系统并在剪贴板上复制他们的垃圾数据。
  • @anishsane 你能用你的提议编辑我的答案吗?我能想到的保护远程端口的唯一方法是将远程服务器连接到命名管道,在 ssh 上使用转发端口重定向来读取该命名管道。
  • 我只是说你答案中的nc -l 8888应该换成nc -l localhost 8888,因为前者相当于nc -l 0.0.0.0 8888,所以网络上的任何系统都可以访问它。加上localhost意味着只能从localhost(环回接口)访问。
  • 但是,可能有一个问题。 (我还没有测试过):如果你做echo hi &gt; /dev/tcp/localhost/8888; some_more_work; echo hello &gt; /dev/tcp/localhost/8888 你通常会期望剪贴板上只有hello。但这很可能会复制所有内容,直到 ssh 会话处于活动状态到剪贴板。在这种情况下,hi\nhello
  • Nc 应该用 eof 关闭,然后重新启动,这就是 -c 标志的作用。
猜你喜欢
  • 1970-01-01
  • 2011-07-05
  • 2010-11-12
  • 1970-01-01
  • 2016-04-28
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-14
相关资源
最近更新 更多