将 netcat 输出发送到光标位置

问题描述

我有一个连接到本地网络的设备,该设备将一个字符串发送到运行 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”打开它是空的。

解决方法

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

nc -l -p 8888 | xclip

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

xdotool click 2   

2 是中间按钮的id

,

tcut cup 提供的 ncurses 命令允许您将终端光标移动到屏幕上的任何位置(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