gpt4 book ai didi

python - 如何使用 Python 访问不同/远程 Windows 机器?

转载 作者:太空宇宙 更新时间:2023-11-03 20:25:30 25 4
gpt4 key购买 nike

我当前正在使用机器 A,我正在尝试通过 Python 访问机器 B 以将文件从机器 B 复制到机器 A。

我已经尝试过这里解释的方法 How to connect to a remote Windows machine to execute commands using 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://learn.microsoft.com/en-us/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)

您可以通过处理异常并用 subprocess.Popen 调用替换 os.system 来改进此代码。注意:请小心使用/MIR 开关,因为它可以复制和删除主机中的文件。它创建目标文件夹的镜像。

关于python - 如何使用 Python 访问不同/远程 Windows 机器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57851711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com