我有一個名爲「遠程Dongle讀卡器」的Python項目。大約有200臺機器安裝了「Dongle」,並有一個對應的.exe文件稱爲「Dongle Manager」。運行加密狗管理器使用加密狗的信息吐出一個「掃描」.txt文件。Python - 網絡WMI遠程運行EXE,並抓取文本結果
我正在嘗試編寫一個腳本,該腳本從中央位置運行,該中央位置具有對整個網絡的管理域訪問權限。它將讀取主機名列表,遍歷每個主機名,並將所有文件恢復。一旦它帶回所有文件,它就會編譯成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")
假設我得到一個連接(計算機上),它通常會失敗在哪裏創建它TEH文件夾或者等待的時間點,或者期望東西scan_folder的列表...無論哪種方式,是東西從創建停止掃描,即使過程已經開始
編輯,我安裝爲A:在代碼/別處
我注意到的一件事...如果當前沒有用戶登錄但計算機已啓動,則不會創建文件 – Busturdust
SW_SHOWNORMAL沒有登錄桌面可能是問題。不要嘗試或SW_HIDE。 – tdelaney
第一個測試很有前途...... @tdelaney在測試產品之前需要完成一些其他任務,會讓你知道 – Busturdust