在Python脚本中用SSH连接

2024-10-01 11:39:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我连接到SSH中的第一个Raspberry Pi(172.18.x.x),我想在第一个RPI上启动一个脚本,但该脚本位于另一个Raspberry Pi(192.168.x.x)上。 首先,我进行了配置,从第一个RPI到第二个RPI而不使用密码。 当我使用第一个命令时,我启动这个命令:

ssh pi@192.168.x.x 'sudo python script_RPI2.py'

这是正确的,我可以检查正确的结果,但我想启动这个脚本在另一个脚本上的第一个RPI。因此,我将前面的命令放入文件:script_RPI1.py。 然后,我启动脚本:sudo python script_RPI1.py 我得到了以下错误:

^{pr2}$

有人知道我的问题吗?在


Tags: 文件py命令脚本密码pisudoscript
2条回答

修改了整个答案,实际上在代码上增加了一些时间。您要集成的完整解决方案将类似于下面的代码。请注意,代码的设置方式可以定义要连接的主机,以及要在远程RPi中执行的命令

import subprocess
import sys

remoteHost="pi@192.168.x.x"
command="python /path/to/script.py"

ssh = subprocess.Popen(["ssh", "%s" % remoteHost, command],
                       shell=False,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE)
result = ssh.stdout.readlines()
if result == []:
    error = ssh.stderr.readlines()
    print >>sys.stderr, "ERROR: %s" % error
else:
    print result

yourVar = result   ### This is where you assign the remote result to a variable

你是如何启动脚本的?从您提供的最少信息中可以看出,您正在尝试或试图在Python交互式解释器中执行该命令,或者您想在解释器中执行该命令,但为了使其成为一个字符串,您忘了用引号(“)将其括起来。在

请再解释一下。在

要运行bash命令:

ssh pi@192.168.x.x 'sudo python script_RPI2.py'

在.sh文件中显示do it,如下例所示:

^{pr2}$

保存此文件后,只需执行./name\u of_文件.sh,它只会在终端中运行bash文件,如果您想运行一个python脚本,在另一个进程中打开一个终端,并执行作为终端命令的字符串,您应该看到如下内容:

from subprocess import call
call(["ls"])

这将在另一个终端进程中执行ls并将结果返回给您。请检查一下你到底想做什么,然后决定其中一条路。在

相关问题 更多 >