使用 netcat 侦听端口并在客户端连接时发送命令的输出

Jos*_*tte 3 networking linux tcp netcat

我有一个连接到 LAN 的 Raspberry Pi (Debian Linux),它可以从某些连接的设备读取数据并将其输出到 STDOUT。

假设该程序在“服务器”上运行,我想将脚本的输出提供/usr/bin/data给端口 1234。

我希望任何客户端通过连接到该端口来提取该脚本的输出,使用类似

nc Server 1234 > ServerData.txt

我希望服务器保持活动状态,为每个连接运行脚本,提供数据,然后关闭与客户端的连接。服务器需要保持活动状态并等待下一个连接。

在服务器上运行的 netcat 命令是什么?

小智 5

将需要 netcat 的更高级版本之一。您可以使用ncatsocat

服务器端

当客户端连接时,执行可执行程序/usr/bin/data并将程序输出发送给客户端。

NCAT 方法

$ ncat -l 1234 -c '/usr/bin/data' --keep-open
Run Code Online (Sandbox Code Playgroud)

SOCAT方法

$ socat -U TCP-LISTEN:5403,fork EXEC:'/usr/bin/data',stderr,pty,echo=0
Run Code Online (Sandbox Code Playgroud)

客户端

连接到服务器,并接收服务器的输出。

NCAT 归档方法

$ ncat Server 1234 | tee ServerData.txt
Run Code Online (Sandbox Code Playgroud)

NC (netcat) 标准输出方法

$ </dev/null nc <Server.ip> 5403 > /dev/stdout
Run Code Online (Sandbox Code Playgroud)

要保存到文件,请将 /dev/stdout 替换为文件名

WGET 方法到文件

$ wget -q <Server.ip>:5403 -O myfile.txt
Run Code Online (Sandbox Code Playgroud)

要打印结果,请将 myfile.txt 替换为 /dev/stdout