自動安裝補丁的程序

這個程序和所有需要安裝的補丁文件放在同一目錄,程序檢查系統目前已經安裝了哪些補丁,自動安裝還沒有安裝的補丁。

# -*- coding: cp936 -*- 
import glob
import subprocess

patched_kb = []
patch_file_kb = []

# 得到系統已經安裝的補丁的KB號
patch1 = subprocess.check_output("wmic qfe get hotfixid")
for i in patch1.split('\r\n'):
    if (cmp(i.strip(), "HotFixID") != 0) and (cmp(i, "") != 0):
        i = i.lstrip("KB")
        patched_kb.append(i.strip())
#print patched_kb
#print "---------------"

# 得到補丁文件的KB號
kb_list = glob.glob(r"WindowsServer2003-KB*.exe")
for line in kb_list:
    res = filter(str.isdigit, line.split("-")[1])
    patch_file_kb.append(res)
#print patch_file_kb
#print "---------------"

# 輸出所有未安裝的補丁到must_patch
must_patch = set(patch_file_kb).difference(patched_kb)
#print must_patch
#print "---------------"

for patch_file in must_patch:
    # 根據KB號搜索補丁文件名
    patch_file = glob.glob(r"WindowsServer2003-KB%s*.exe" % patch_file)
    # 安裝補丁的命令
    patch_cmd = "%s /quiet /norestart" % patch_file[0]
    # 執行命令
    if subprocess.call(patch_cmd) == 0:
        print patch_file, "安裝成功"
    else:
        print patch_file, "安裝失敗"

用subprocess.check_output()代替了os.system()和read()。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章