我想通过 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