簡體   English   中英

如何使用Python訪問其他/遠程Windows計算機?

[英]How to access a different/remote Windows machine using Python?

我目前正在使用機器A,並且正在嘗試通過Python訪問機器B,以將文件從機器B復制到機器A。

我已經嘗試過這里介紹的方法了。 如何連接到遠程Windows計算機以使用python執行命令? ,但運氣不好,因為我什至無法訪問遠程計算機。 我願意接受其他解決方案,如果使用Python 3+,甚至會更好。 這是正在使用的代碼的示例。

ip = r'\\IP.IP.IP.IP'
username = r'AccountUserName'
password = r'AccountPassword'
    # -------------------------------- with win32net

    import win32net
    import win32file

    data = {
        'remote': r'\\IP.IP.IP.IP\C$', 
        'local': 'C:',
        'username': username,
        'password': password 
    }

    win32net.NetUseAdd(None, 2, data)



    # -------------------------------- with wmi

    import wmi
    from socket import *
    try:
        print ("Establishing connection to %s" %ip)
        connection = wmi.WMI(ip, user=username, password=password )
        print ("Connection established")
    except wmi.x_wmi:
        print ("Your Username and Password of "+getfqdn(ip)+" are wrong.")
  • 使用win32net方法

根據此處的文檔https://docs.microsoft.com/zh-cn/windows/win32/api/lmuse/nf-lmuse-netuseadd如果要在同一台計算機上運行該功能,則腳本將從(A ),則可以將第一個參數f NetUseAdd保留為NONE,但是這樣我得到了錯誤

    pywintypes.error: (87, 'NetUseAdd', 'The parameter is incorrect.')

如果我將其更改為“ 127.0.0.1”,則會收到錯誤消息

    pywintypes.error: (50, 'NetUseAdd', 'The request is not supported.')

最后,如果我使用嘗試訪問的IP進行更改,則會收到錯誤消息

    pywintypes.error: (1326, 'NetUseAdd', 'Logon failure: unknown user name or bad password.')
  • 使用wmi方法

它給出了錯誤

    Your Username and Password of \\IP.IP.IP.IP are wrong.

可以有多種方法來實現這一目標。 下面給出其中之一,它利用了內置的Windows實用程序。

import os

machine_b = {"ip":"10.197.145.244","user":"administrator","pwd":"abc1234"}
src = r"C:\Temp" # folder to copy from remote machine
dest = r"C:\Python27\build\temp" # destination folder on host machine
network_drive_letter = "Z:"
source_driver_letter = os.path.splitdrive(src)[0][0]
cmd = "netuse %s \\%s\%s$ %s /u:%s"%(network_drive_letter, machine_b["ip"],source_driver_letter,machine_b["pwd"],machine_b["user"])
os.system(cmd)
cmd = "robocopy %s %s /mir"%(src.replace(source_driver_letter,network_drive_letter),dest)
os.system(cmd)

您可以通過處理異常並將os.system替換為subprocess.Popen調用來改進此代碼。 注意:/ MIR開關要小心,因為它可以在主機中復制和刪除文件。 它創建目標文件夾的鏡像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM