Python - 网络WMI远程运行exe,抓取文本结果

标签 python dns wmi

我有一个名为“Remote Dongle Reader”的 Python 项目。大约有 200 台机器附有“Dongle”,以及一个名为“Dongle Manager”的相应 .exe。运行加密狗管理器会吐出一个“扫描”.txt 文件,其中包含来自加密狗的信息。

我正在尝试编写一个从中央位置运行的脚本,该位置具有对整个网络的管理域访问权限。它将读取主机名列表,遍历每个主机名,然后取回所有文件。一旦它带回所有文件,它将编译为 csv。

我让它在我的实验室/测试服务器上工作,但在生产系统中,它不起作用。我想知道这是否是某种登录问题,因为人们可能正在积极使用该系统。该过程需要静默启动,并在后台执行所有操作。但是,由于我正在连接到管理员用户,我想知道是否存在冲突。

在我希望文件存在之前,我不确定除了 tge 应用程序之外发生了什么。 “加密狗管理器”进程启动,但它似乎没有在任何未以管理员身份登录的计算机(我正在运行的帐户)上吐出扫描。

下面是代码的 WMI 部分的片段。这是一个非常快速的脚本,所以我对任何非 pythonic 语句表示歉意。

        c = wmi.WMI(ip, user=username, password=password)

        process_startup = c.Win32_ProcessStartup.new()
        process_startup.ShowWindow = SW_SHOWNORMAL
        cmd = r'C:\Program Files\Avid\Utilities\DongleManager\DongleManager.exe'
        process_id, result = c.Win32_Process.Create(CommandLine=cmd,
                                                    ProcessStartupInformation=process_startup)
        if result == 0:
            print("Process started successfully: %d" % process_id)
        else:
            print("Problem creating process: %d" % result)
        while not os.path.exists(("A:/"+scan_folder)):
            time.sleep(1)
            counter += 1
            if counter > 20:
                failed.append(hostname)
                print("A:/"+scan_folder+"does not exist")
                return

        time.sleep(4)

        scan_list = os.listdir("A:/"+scan_folder)
        scan_list.sort(key=lambda x: os.stat(os.path.join("A:/"+scan_folder, x)).st_mtime, reverse=True)
        if scan_list is []:
            failed.append(hostname)
            return

        recursive_overwrite("A:/"+scan_folder+"/"+scan_list[0],
                            "C:\\AvidTemp\\Dongles\\"+hostname+".txt")

假设我建立了连接(计算机开启),它通常会在等待创建文件夹或期望 scan_folder 列表中的某些内容时失败...无论哪种方式,某些东西正在停止扫描正在创建,即使进程正在启动

编辑,我在代码的其他地方挂载为 A:/

最佳答案

问题是您已请求显示应用程序窗口,但没有登录桌面来显示它。 WMI 示例经常使用 SW_SHOWWINDOW 但这通常是错误的选择,因为使用 WMI 您通常会尝试在后台运行某些东西。在这种情况下,SW_HIDE(或什么都不做)是更好的选择。

关于Python - 网络WMI远程运行exe,抓取文本结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33480705/

相关文章:

python - Python可以调用DLL中的Delphi函数吗?

python - 使用多处理时避免重新编译 numba 代码

python - 关于 Python 描述符和 <Descriptor HowTo Guide> 的困惑

c# - guest 帐户限制

powershell - 如何向现有 PowerShell 对象添加成员?

c# - 检查机器上的第三方防火墙

Python/Pydantic 迭代具有多个项目的帖子正文

DNS设置: OpenShift with CloudFlare/rhcloud

google-chrome - net::ERR_INSECURE_RESPONSE 将 heroku 应用程序部署到 google 域

unix - 如何将流量定向到/etc/hosts 中的子域?