使用python将文件下载/上传到远程Windows服务器

时间:2015-03-30 17:46:58

标签: python windows ssh paramiko

我想使用我的python脚本从远程Windows 2008 R2服务器下载/上传文件。问题是我不想在我的Windows服务器盒上安装任何额外的东西。我想使用我的普通登录凭据来实现这一点。

以下是我听到的不同方法:

  1. 使用paramiko SSH:但是要使用它,我们必须在远程盒子上安装SSH服务,我不想这样做。
  2. 使用python wmi模块:但我想它没有从远程服务器下载文件的功能。
  3. 在本地盒子上安装驱动器:也不想这样做,因为我想连接很多机器。
  4. 使用winscp:我想它还需要SSH?
  5. 面料:听说过这个,不确定它的先决条件是什么。
  6. 有没有其他方法可以实现这个目标?

2 个答案:

答案 0 :(得分:2)

当在Windows中执行时,用户也会这样做。

如果您无法在服务器上安装其他软件,则需要安装驱动器,并与远程文件进行交互,就像它们是本地文件一样。

您提到要连接的远程服务器太多。为什么不选择一个驱动器号,并将其重新用于需要连接的每个服务器?

使用net use,您可以从命令行挂载。

Syntax for net use

net use p: /delete:yes
net use p: \\remote_host\share_name password /user:domain\user

使用Python的subprocess包来运行mount命令。 Subprocess tutor

import subprocess

# Make sure the drive isn't mounted.
try:
    subprocess.call('net use p: /delete:yes', shell=True)
except:
    # This might fail if the drive wasn't in use.
    # As long as the next net use works, we're good.
    pass

for host in ("host1", "host2"):
    # mount(map) the remote share.
    subprocess.call('net use p: \\%s\share_name password /user:domain\user' % host, shell=True)
    with open("p:\path\remote-file.txt", "r") as remote_file:
        # do stuff
    # dismount(map) the drive
    subprocess.call('net use p: /delete:yes', shell=True)

(不要有一个Windows框和网络来测试它。)

答案 1 :(得分:0)

使用win_unc库:http://covenanteyes.github.io/py_win_unc/

这将允许您对文件路径进行常规修改,以及以其他用户身份登录。