subprocess.Popen()读取一个文件

时间:2014-11-27 13:12:38

标签: python ssh proxy subprocess

我试图使用子进程来读取存储在远程服务器中的文件。

import subprocess
import sys

ssh = subprocess.Popen(['ssh', 'hjh:passwd@myserver', 'cat', 'data/test.txt'],
                   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

现在运行此操作会导致错误

Traceback (most recent call last):
  File "C:/Users/hjh/Desktop/try.py", line 15, in <module>
stderr=subprocess.PIPE)
  File "C:\Python27\lib\subprocess.py", line 710, in __init__
errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 958, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

此错误是否意味着无法找到服务器上的文件?或者子进程中是否有错误?对于这个错误,Google对我没有多大帮助。

我也使用未在此处指定的代理,这可能是个问题吗?

干杯,

2 个答案:

答案 0 :(得分:1)

我认为Windows无法找到SSH可执行文件。检查在ssh中输入cmd.exe时会发生什么。尝试在Popen调用中添加SSH客户端可执行文件的完整路径,或将SSH目录添加到PATH环境变量中。

答案 1 :(得分:0)

好像&#34; ssh&#34;无法解决。我要么完全限定位置到Popen构造函数调用中的ssh可执行文件和/或它在可搜索的PATH中。