使用python将本地文件传输到远程服务器(窗口)

时间:2015-02-12 13:07:50

标签: python paramiko

嗨,我有这个样本路径" \ 10.81.67.162"这是一个远程服务器(Windows操作系统)

我希望能够使用python中的paramiko将文件(本地)传输到远程服务器。

如果服务器在linux中,我可以使它工作。

这是我的示例代码

import paramiko
import base64
username = 'username'
password = 'password'
host = "10.81.67.162"
port = 22


transport = paramiko.Transport((host,port))
transport.connect(username = username, password = password)
stfp = paramiko.SFTPClient.from_transport(transport)

但是在Windows中出现了这个错误:

Traceback (most recent call last):
  File "ssh.py", line 9, in <module>
    transport = paramiko.Transport((host,port))
  File "build\bdist.win32\egg\paramiko\transport.py", line 289, in __init__
  File "C:\Python27\lib\socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 10061] No connection could be made because the target machi
ne actively refused it

Python 2.7版

Paramiko版本1.7.5

谢谢!

2 个答案:

答案 0 :(得分:0)

Windows上没有运行SSH服务器。这就是为什么你无法连接。 Windows本身不支持SSH。您需要在远程Windows主机上安装第三方SSH服务器,如cygwin,bitwise ssh或freeSSHD。

或者如果您有兴趣只在Windows主机上运行命令,那么您可以使用Windows本机支持的winrm协议。为此你需要一个python库pywinrm。我用过这个并且工作正常:

https://github.com/diyan/pywinrm

答案 1 :(得分:0)

如果您尝试连接到网络驱动器,可以使用win_unc:

import os
from win_unc import UncCredentials, UncDirectory, UncDirectoryConnection

creds = UncCredentials('USERNAME', 'PASSWORD')
unc = UncDirectory(r'\\<computername>\c$', creds)

conn = UncDirectoryConnection(unc)
conn.connect()

print list(os.listdir(r'\\<computer_name>\c$\<folder>'))