2014-11-27 3 views
0

Я пытаюсь использовать подпроцесс для чтения файла, хранящегося на удаленном сервере.subprocess.Popen() прочитать файл

import subprocess 
import sys 

ssh = subprocess.Popen(['ssh', 'hjh:[email protected]', '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 не очень помог мне в этой ошибке.

Я также работаю с прокси-сервером, который здесь не указан, может быть, проблема?

Приветствия,

ответ

1

Я полагаю, что Windows не может найти исполняемый файл SSH. Проверьте, что происходит, когда вы вводите ssh в cmd.exe. Попробуйте добавить полный путь к исполняемому файлу клиента SSH в вызове Popen или добавить каталог SSH в переменную среды PATH.

+0

Да, когда я изменил 'shell = True', он показал, что' 'ssh 'не распознается как внутренняя или внешняя ошибка команды. Поэтому я исправлю это. благодаря – Henkes

0

Похоже, что "SSH" не может быть решена. Я бы либо полностью определил место для исполняемого файла ssh в вызове конструктора Popen и/или он находится в PATH для поиска.

Смежные вопросы