我需要在另一台计算机上生成的一台计算机上不断读取和处理数据。
到目前为止,我可以使用以下内容将第二台计算机中的mypipe
tosend数据用于第一台计算机:
cat mypipe | ssh second_com@IP_address 'cat destfile'
这很有效,数据现在不断地转储到destfile
,但文件大小增加得非常快,这不是我需要的解决方案。
我想做的是直接将数据传输到我的python脚本而不将其写入文件。有关如何做到这一点的任何建议?
答案 0 :(得分:0)
您撰写的内容不会将数据转储到destfile
。它的作用是:
cat mypipe
:将名为mypipe
的文件的内容转储到其标准输出。|
:从cat mypipe
获取标准输出并将其作为标准输出发送到ssh
。ssh second_com@IP_address
:创建与另一个系统的ssh
连接,并在那里运行指定的命令,转发其stdin。'cat destfile'
:在另一个系统上运行命令cat destfile
- 忽略转发的stdin并将名为destfile
的文件的内容转储到stdout,这无处可用。 你可能拥有的更像是这样的东西:
cat mypipe | ssh second_com@IP_address 'cat >destfile'
区别在于:
'cat destfile'
:在另一个系统上运行命令cat >destfile
- 所以cat
只是将转发的stdin复制到其stdout,然后>destfile
导致该stdout到存储在本地文件destfile
。所以结果正如你所描述的那样。
最明显的改变方法是将Python程序放在cat
的位置。当然,您需要将程序放在可访问的远程计算机上,例如second_com
用户的主目录。然后你可以执行它:
cat mypipe | ssh second_com@IP_address 'python myscript.py'
现在,在myscript.py
内,它可以从sys.stdin
读取,cat mypipe
来自|
(来自ssh
和destfile
)的数据流,你可以做任何想做的事情,而不需要先将它保存到1.0.0-alpha01
。