我试图使用子进程来读取存储在远程服务器中的文件。
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对我没有多大帮助。
我也使用未在此处指定的代理,这可能是个问题吗?
干杯,
答案 0 :(得分:1)
我认为Windows无法找到SSH可执行文件。检查在ssh
中输入cmd.exe
时会发生什么。尝试在Popen调用中添加SSH客户端可执行文件的完整路径,或将SSH目录添加到PATH环境变量中。
答案 1 :(得分:0)
好像&#34; ssh&#34;无法解决。我要么完全限定位置到Popen构造函数调用中的ssh可执行文件和/或它在可搜索的PATH中。