ssh在终端中工作,但不通过Python

ssh在终端中工作,但不通过Python,python,ssh,Python,Ssh,我正在尝试使用Python脚本通过ssh将数据写入远程机器上的磁盘。但是,它给出了一个错误dd:/dev/xbd2d:设备未配置。 import argparse import os import time parser = argparse.ArgumentParser(description='basis') parser.add_argument("-g", default=1, help="") args = parser.parse_args() volume = args.g in

我正在尝试使用Python脚本通过ssh将数据写入远程机器上的磁盘。但是,它给出了一个错误
dd:/dev/xbd2d:设备未配置。

import argparse
import os
import time

parser = argparse.ArgumentParser(description='basis')
parser.add_argument("-g", default=1, help="")
args = parser.parse_args()
volume = args.g
instance_ip=10.1.12.3
cmd_ssh='ssh -tt -i basis.pem root@'+instance_ip+ ''' "date | dd of=/dev/xbd2d"'''
os.system(cmd_ssh)
非常不寻常的是,如果使用命令:

ssh -tt -i basis.pem root@10.1.12.3 "date | dd of=/dev/xbd2d"

在终端中,它正确执行,没有任何问题,并将数据写入磁盘。我在C++中编写了同样的脚本,它运行良好,但由于某些原因,Python给了我代码:De:/Dev/XBD2:没有配置的设备。< /Cord>< /P> < P>检查变量周围的引号,并且使用“代替三重引号解决了我的问题,如Eran

推荐的。
import argparse
import os
import time

parser = argparse.ArgumentParser(description='basis')
parser.add_argument("-g", default=1, help="")
args = parser.parse_args()
volume = args.g
instance_ip=10.1.12.3
cmd_ssh="ssh -tt -i basis.pem root@"+str(instance_ip)+" \"date | dd of=/dev/xbd2d\""
os.system(cmd_ssh)

大概
instance\u ip
应该是一个字符串(在编写时是一个语法错误)。你也试过使用
subprocess.Popen
而不是
os.system
。如果需要,使用
shell=True
。好的@Eran,我还没有试过subprocess.Popen,所以我会马上做。但是我试过标准的Popen,它也给出了错误,子进程仍然会出现同样的错误。Popen@eraas@Eran说,你需要的代码是have show可能无法运行,因为ip地址周围缺少引号。请确保您发布的代码是可运行的,并且实际演示了该问题。