Изменение каталога в Windows SSH-соединении с помощью Python

Вот мой код для подключения к рабочему столу Windows LAN через SSH (сервер Cygwin работает на рабочем столе LAN) с моего ПК с Windows:

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('135.24.237.178',username = 'cyg_server',password = 'sandforce')

Я могу успешно подключиться. Но теперь, если я сделаю это:

command = "cd c:\;dir"
stdin,stdout,stderr = ssh.exec_command(command)
stdout.readlines()

Тогда pyscripter ничего не выводит. Кто-нибудь может сообщить мне, почему и как я могу заставить этот код работать?


person user3565150    schedule 19.01.2015    source источник
comment
Проверьте, подходит ли вам ответ по этой ссылке. stackoverflow.com/questions/10745138/python-paramiko-ssh   -  person Stephen Lin    schedule 19.01.2015
comment
возможный дубликат Как получить код возврата SSH, используя Парамико?   -  person sunshinekitty    schedule 19.01.2015


Ответы (1)


Я не могу воспроизвести вашу проблему. Я использую этот код:

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, username = user, password = pw)
command = "cd c:\;dir"
stdin, out, err = client.exec_command(command)
print "stdout: " + out.read()

Выход:

stdout: 

    Directory: C:\


Mode                LastWriteTime         Length Name                                             
----                -------------         ------ ----                                             
d-----        9/12/2016   7:34 AM                Logs                                             
d-----        9/26/2018   1:33 PM                Microsoft                                        
d-----        9/26/2018  11:47 AM                OpenSSH-Win32                                    
d-r---        9/27/2018   3:57 AM                Program Files                                    
d-----        9/26/2018  11:43 AM                Program Files (x86)                              
d-----        9/27/2018   3:56 AM                Python27                                         
d-----        9/26/2018  12:27 PM                support                                          
d-----        9/26/2018  12:27 PM                TEMP                                             
d-r---        9/27/2018   7:40 AM                Users                                            
d-----        9/27/2018   3:58 AM                Windows                                          
-a----        9/26/2018  11:42 AM            435 adrights.log                                     
-a----        9/27/2018   7:40 AM           6532 rshd.log                                         
-a----        9/26/2018  11:42 AM            107 rshdinst.log                                     
-a----        9/26/2018  11:47 AM            849 rshds.log                                        
-a----        9/26/2018  11:43 AM              0 validate.log 

Я знаю, что это не ответ, но в комментарии он не поместится. Ссылки в комментариях тоже не особо полезны. Вот мой обычный код для таких вещей:

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, username = user, password = pw)
channel = client.get_transport().open_session()
command = "cd c:\;dir"
channel.exec_command(command)
out = channel.makefile().read()
err = channel.makefile_stderr().read()
returncode = channel.recv_exit_status()
channel.close()                       # channel is closed, but not the client

Надеюсь это поможет.

person Zach    schedule 27.09.2018