【问题标题】:send netcat output to cursor position [closed]将netcat输出发送到光标位置[关闭]
【发布时间】:2021-02-12 09:27:28
【问题描述】:

我有一个连接到本地网络的设备,它将字符串发送到运行 Debian 的 PC 的特定端口(连接到同一网络)。在这台 PC 上,我需要将该字符串放在光标位置(例如,在打开的文本编辑器中)。

我可以用这个命令从终端读取字符串

nc -l -p 8888

但我想不出办法将该字符串放在光标位置。

经过测试,我希望它成为在后台保持活跃的服务

感谢任何有建议的人。

编辑:

按照 JoseLinares 的建议,我尝试使用命令将 netcat 输出复制到剪贴板

nc -l -p 8888 | xclip

然后我尝试将其粘贴到文本编辑器中,但没有任何反应。 使用 echo 命令 (echo "something" | xclip) 就可以了。

另一个奇怪的事情,如果将输出发送到文件(nc -l -p 8888 > test)并用“nano”编辑器打开该文件,我会看到该值,但如果我尝试用“cat”打开它,它是空的。

【问题讨论】:

  • 您的意思是您希望将 netcat 的输出通过管道传输到您的 shell,但在您的光标所在的位置上?
  • 是的@JakeCope,正是这样

标签: linux bash debian netcat caret


【解决方案1】:

可以使用 xclip 将 nc 的输出保存到剪贴板中:

nc -l -p 8888 | xclip

然后使用xdotool来模拟鼠标中键的点击。这将导致在大多数桌面管理器的光标位置复制剪贴板内容:

xdotool click 2   

2是中间按钮的id

【讨论】:

  • 感谢回答,nc的结果并没有用xclip复制到剪贴板。相反,如果我尝试使用 echo "test" | xclip 它的工作原理。
  • @MattiaGAZZANIGA 和 nc -l -p 8888 |& xclip ?
  • 这种方式也行不通。我试过 nc -l -l 8888 | xclip -selection 剪贴板,但没有运气
  • @MattiaGAZZANIGA 你做到了吗?我可以用你的解决方案更新答案
【解决方案2】:

ncurses 提供的tcut cup 命令允许您将终端光标移动到屏幕上的任意位置(0,0 为左上角)。

例如,您可以这样使用它:

nc -k -l 8888 \
| while read -r line; do
    tput cup 5 5
    printf '%s        ' "$line"
done

在这里,nc 在端口 8888 上收到的所有内容都将写入位置 (5,5) 的终端。

注意 1:netcat (nc) 有多个版本。你的可能没有-k 开关(= 在第一次连接结束后不要死)。

注意 2:您提到了一项服务。服务通常不绑定到终端,但您可以打开一个(man openvt)或将上面的命令重定向到现有的一个(例如> /dev/tty1

【讨论】:

  • 感谢您的回复,我会尝试您的指示。关于服务,我不需要启动终端(我现在只是用它来测试),我只需要当我启动PC时,它会自动监听8888端口并将所有输出发送到活动用户图形会话的光标位置(它将是浏览器上的输入字段)。
  • 恐怕您的程序无法知道当前图形会话中当前活动的终端是什么。在我的机器上,目前有 40 个伪终端正在运行,从系统的角度来看,它们都同样有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
  • 2015-04-08
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
相关资源
最近更新 更多