用于scp文件的Python代码失败,名称解析问题

时间:2016-12-14 12:51:25

标签: python linux subprocess

我正在尝试将文件从我的本地linux机器scp到远程linux机器。 这是我正在尝试的代码

filename = '/tmp/myfile'
remotepath = '/tmp'
command = 'nodeattr'
sproc = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
server = sproc.communicate()

print "connecting to",server[0]

p = subprocess.Popen(["scp", filename, "root@"+server[0]+":"+remotepath])
sts = p.wait()

当我运行上述内容时,我收到如下错误

  

连接到abc.local

     

ssh:无法解析主机名abc.local:名称或服务未知   失去联系

但是,当我在命令行上执行ssh时,它允许我连接到远程主机abc.local并且我没有问题。但是当我使用subprocess时,我收到了此错误。

知道我是否以错误的方式使用子进程?

1 个答案:

答案 0 :(得分:1)

注意" abc.local"之间的换行符。错误消息中的以下冒号:从第一个Popen返回的实际字符串是" abc.local \ n"。您需要.strip()或以其他方式摆脱该换行符。