自动安装补丁的程序

来源:互联网 发布:网络教育要交几年学费 编辑:程序博客网 时间:2024/06/10 07:24

这个程序和所有需要安装的补丁文件放在同一目录,程序检查系统目前已经安装了哪些补丁,自动安装还没有安装的补丁。

# -*- coding: cp936 -*- import globimport subprocesspatched_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_patchmust_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()。