2024-05-19 13:59:31 发布
网友
我需要在一台计算机上连续读取和处理另一台计算机上生成的数据。在
到目前为止,我能够使用mypipe将数据从第二台计算机发送到第一台计算机,方法如下:
mypipe
cat mypipe | ssh second_com@IP_address 'cat destfile'
这是可行的,数据现在不断地被转储到destfile,但是文件大小增加得非常快,这不是我需要的解决方案。在
destfile
我想做的是直接将数据通过管道传输到python脚本中,而不用将其写入文件。有什么建议吗?在
您编写的内容不会将数据转储到destfile。它的作用是:
cat mypipe
|
ssh
ssh second_com@IP_address
'cat destfile'
cat destfile
你可能有更像这样的东西:
cat mypipe | ssh second_com@IP_address 'cat >destfile'
区别在于:
cat >destfile
cat
所以结果就是你所描述的那样。在
改变这一点最明显的方法是将Python程序放在cat的位置。当然,您需要将您的程序放在远程计算机上,某个可访问的地方,例如second_com用户的主目录。然后您可以执行如下操作:
second_com
现在,在myscript.py中,它可以从sys.stdin读取,这将是来自cat mypipe(通过|和ssh)的数据流,您可以对该数据执行任何您想做的事情,而不需要先将其保存到destfile。在
myscript.py
sys.stdin
您编写的内容不会将数据转储到
destfile
。它的作用是:cat mypipe
:将名为mypipe
的文件的内容转储到其stdout。在|
:从cat mypipe
获取stdout并将其作为stdin发送到ssh
。在ssh second_com@IP_address
:创建到另一个系统的ssh
连接,并在那里运行指定的命令,同时转发其stdin。在'cat destfile'
:在另一个系统上运行cat destfile
命令,该命令忽略stdin中转发的内容,并将名为destfile
的文件的内容转储到stdout,这没有任何用处。在你可能有更像这样的东西:
区别在于:
'cat destfile'
:在另一个系统上运行命令cat >destfile
,这样cat
只将转发的stdin复制到它的stdout,然后{destfile
。在所以结果就是你所描述的那样。在
改变这一点最明显的方法是将Python程序放在
^{pr2}$cat
的位置。当然,您需要将您的程序放在远程计算机上,某个可访问的地方,例如second_com
用户的主目录。然后您可以执行如下操作:现在,在
myscript.py
中,它可以从sys.stdin
读取,这将是来自cat mypipe
(通过|
和ssh
)的数据流,您可以对该数据执行任何您想做的事情,而不需要先将其保存到destfile
。在相关问题 更多 >
编程相关推荐