2016-02-10 2 views
1

Я хотел бы подключиться к удаленной машине и также хотел бы выполнять определенные команды там.Подключиться к удаленной машине, используя подпроцесс

Детали:

Удаленная машина: Это линукс машина.

Локальный компьютер: это машина Windows 7.

Мой код Python находится на компьютере с Windows.

import subprocess 
import sys 

HOST="eseki.rnd.sozi.se" 
# Ports are handled in ~/.ssh/config since we use OpenSSH 
COMMAND="uname -a" 

ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND], 
         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\ABC\workspace\HelloWorldPython\src\SSHTestModule.py", line 16, 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 

Что я должен сделать, чтобы подключиться к удаленному компьютеру с помощью Python?

+3

вы установили SSH на вашем выиграть поле? ssh не является чем-то, что microsoft предоставляет из коробки ... –

+0

Нет, я не установил его –

+3

, тогда как вы ожидаете, что python сможет выполнить программу, которая не была установлена? –

ответ

0

У вас либо нет клиента ssh, установленного на вашей локальной машине, либо его нет в переменной PATH.

В любом случае, я рекомендую вам заглянуть в библиотеку, специально предназначенные для SSH вместо использования подпроцесс (например, http://www.paramiko.org/)

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