我有2个Raspberry Pi' 3,运行 Ubuntu Mate 。 在每个RPi上都有一个要读取或复制的CSV文件(取决于它是否掌握)。
python代码在RPI#1上运行,需要从RPi#2复制文件(并将其作为本地文件读取)。
如何通过SSH进行操作?
答案 0 :(得分:2)
选项太多。但总的来说,除非你有充分的理由不这样做,否则我会退出:
import subprocess
result = subprocess.run(['ssh', 'dude@otherpi', 'cat /var/lol/cats.csv'], stdout=subprocess.PIPE)
result.check_returncode()
cats_csv = result.stdout
我们告诉Python运行此命令:ssh dude@otherpi "cat /var/lol/cats.csv"
。因此,ssh
进程将连接到dude@otherpi
并在远程上运行命令cat /var/lol/cats.csv
。您可以通过在shell中运行该行来尝试此操作。 Python捕获此命令的输出,我们要使用stdout=subprocess.PIPE
对其进行配置。对check_returncode
的调用只是在出现问题时中止,例如连接错误或找不到文件。
您可以复制它,然后在本地打开它,而不是immediatley捕获整个CSV。这将允许处理大文件。然后命令将是['rsync', 'dude@otherpi:/var/lol/cats.csv', '/tmp/cats.csv']
。如果scp
不可用,请使用rsync
。
答案 1 :(得分:1)
另一个有用的方法,因为它不是一个大文件 - 将它复制到本地RPi。
result=subprocess.run(['scp','guy@192.168.2.112:/home/guy/PythonProjects/schedule.csv','/home/guy/schedule_192.168.2.112.csv'],stdout=subprocess.PIPE)