gpt4 book ai didi

python - 两台电脑之间通过ssh传输文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:06:49 24 4
gpt4 key购买 nike

我有两台装有 Linux 的计算机(我们将它们命名为 A 和 B)(两个 raspberry pi 3)。我需要从 B 获取文件并在 A 上查看它。所以我用 ssh 连接了它们。

B代码文件包含:

import rospy
from clever import srv
rospy.init_node('telemetry')
file = open("telemetry", "w+")
while True:
get_telemetry = rospy.ServiceProxy('get_telemetry', srv.GetTelemetry)
position = get_telemetry(frame_id='aruco_map')
f.write(get_telemetry)

在这里调用一个rospy Service Proxy,然后写
必要的信息到文件“遥测”中,我在两个树莓上创建。这部分工作正常。

A上的代码文件包含

import subprocess
while True:
subprocess.call(["ssh","pi@B", "'cat telemetry'", ">", "telemetry"])

B是树莓派ip,pi是登录

但是当我在 A 上运行代码文件时,它说“bash: cat telemetry: command not found”我究竟做错了什么?感谢您的帮助。

最佳答案

使用 subprocess.call 时,您不需要添加额外的引号,因为空格不是分隔符。此外,由于本地不涉及 shell,因此使用 > 的输出重定向不起作用。 > 将被发送到远程主机并远程运行。要将实际的本地命令重定向到文件,您必须通过传递名为 stdout 的参数来使用子进程 PIPE 输出捕获:

with open('telemetry', 'wb') as f:
subprocess.call(["ssh", "pi@B", "cat telemetry"], stdout=f)

这应该可以解决您的问题并回答您的问题“我做错了什么?” - 然而,正如其他人在评论中指出的那样,您应该考虑使用 scpsshfs 甚至 paramiko session 而不是运行远程cat 复制文件。

关于python - 两台电脑之间通过ssh传输文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51955649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com