管道输出从python脚本到远程机器?

时间:2011-03-11 20:38:19

标签: python linux bash shell

我有一个python脚本,可以输出/打印一个大型数组(大小为50MB)到屏幕上。此脚本在machineA上运行。是否可以将此输出“管道”到machineB,它将被处理?

我知道我可以将输出保存在machineA上的文件中,然后将文件发送到machineB。我只是想知道是否可以这样做而无需先将数据保存到文件中(machineA)。

任何解决方案(python,bash shell,其他想法)都将受到赞赏。

5 个答案:

答案 0 :(得分:5)

这是nc(netcat)的工作... machineB你做

nc -l 12345 | processing_program

此命令将以“监听模式”启动netcat,等待连接。一旦建立连接,来自网络的内容将被发送到stdout,并且发送到stdin的内容将被发送回任何连接的人。

然后继续machineA并运行

generating_program | nc machineB 12345

这将指示netcat启动与machineB(端口12345)的连接,并通过线路发送从stdin获取的任何内容。无论从该连接返回什么,都会发送到标准输出。

答案 1 :(得分:1)

使用Netcat tool,您可以轻松地将数据从一台计算机传输到另一台计算机。

答案 2 :(得分:1)

你可以在不同的级别上进行 - 这里有几个选项

  1. 使用ssh管道       myprog | ssh remotemachine myotherprog
  2. 使用nfs(如果要转到文件
  3. 使用netcat(nc)
  4. 使用像thrift这样的东西
  5. 这取决于实体和安全性。永久解决方案需要

答案 3 :(得分:1)

也许是

的内容
myPythonScript | ssh user@machine "sh -c 'cat >myfile.txt'"

警告:完全脱离我的头部并且未经测试!

答案 4 :(得分:1)

在machineA上:

python script-on-machineA.py --options | ssh machineB tee /file/on/machine/B.txt

或者,在machineB上:

ssh machineA python /path/to/script-on-machineA.py --options | cat > /file/on/machine/B.txt