如何从命令行通过 TCP 传输数据?

如何从命令行通过 TCP 传输数据?

我想通过 tcp 将命令行中的一台机器的数据传送到另一台机器。我想我可以编写一个套接字服务器,但这必须已经实现。例如我可以将它用于xz文件并通过网络通过指定端口将其发送到另一端,在那里我可以对其进行解码并保存:

机器 A:strarc -c -d:c:/windows | xz -c -z - | magicsend -p 80 -h 192.168.1.100 机器 B:magicreceive -p 80 | xz -d -f - | strarc -x -d:x:/windows

我想在 Linux 中执行此操作和/或带有开源工具的 Windows。因此,具有[非官方] Windows 端口的 Linux 工具是首选。:)

非常欢迎提供可用的示例命令行。

(请注意,在 Linux 示例中,我cat /vmlinuz会这样做斯特拉克,当然不完全等同。;) )

答案1

使用 netcat。请参阅“man netcat”的“CLIENT/SERVER”部分。一台机器 B:

nc -l 1234 | xz -c > sammy.xz

在机器 A 上:

cat sammy | nc 192.168.1.100 1234

请注意,以这种方式保持端口开放可能会有安全隐患。

作为指出,在发送端进行压缩在网络带宽方面更有效率:

xz -c sammy | nc 192.168.1.100 1234

并且只需在接收端保存即可:

nc -l 1234 > sammy.xz

答案2

网猫应该可以满足您的需求;我手边没有文档所以不能确定,但​​我认为发送方的命令应该是[...] | nc -h192.168.1.100 -p80,而接收方应该使用nc -l -p80 | [...]

答案3

由于您需要远程登录到至少一台机器(运行 magicsend 或 magicreceive),您可以使用 ssh 吗?

在 Windows 上,ssh 客户端很容易获得(例如,只要安装 cygwin)。ssh 服务器也很容易获得,但安装/配置可能更难。

如果你当前在机器 A 的控制台上并且机器 B 是远程的,则会发生以下情况:

机器A:strarc whatever | xz -c -z - | ssh me@machineB '(xz -d -f - | strarc somethingelse)'

或者如果你在机器 B 的控制台上并且需要远程登录到机器 A,那么:

机器B:ssh me@machineA '(strarc whatever | xz -c -z -)' | xz -d -f - | strarc somethingelse

相关内容