Python文件批量检测CVE-20190708的补丁是否安装

批量检测内网主机的CVE-2019-0708补丁的安装情况,写了一个python文件:

文件内容如下:

'''
扫描主机是否安装了CVE2019-0708的补丁
思路:
    1. 读取txt文件夹中的网段
    2. 遍历网段执行命令,将结果导入txt文件中
    3. 整理数据将数据分为已安装补丁和未安装补丁的文件
    '''
import os
import re

def scan_ip():  #扫描ip并将结果放入相应ip段命名的文件中
    flist = []
    ip_txt = input("请输入你想导入的网段文件名,请确认你的网段的形式如下:10.175.101.1-10.175.101.254 :")
    for i in open(ip_txt,"r"):
        #print(i.strip())
        m = i.strip()      #去除空格
        ms = m.split(".")  #将网段分隔,取出前面三个元素组成文件
        #print(ms)
        res_txt = ms[0] + "_" + ms[1] + "_" + ms[2] + ".txt"
        flist.append(res_txt)
        
        if not os.path.exists(res_txt):   #判断文件是否存在,不存在则创建
            f = open(res_txt,"w")
            f.close()
            print("{}已创建".format(res_txt))
        else:
            print("{}已存在".format(res_txt))
            
        print("开始扫描{}网段".format(m))    
        cmd1 = "rdpscan " + m + " > " + res_txt  #执行检测命令并且导入文件中
        print(cmd1)
        os.system(cmd1)
        print("{0}网段已扫描完".format(m))
    print("已全部扫描完")
    return flist


def coll_data(flist):  #将生成的结果文件中的数据分类为已安装和未安装两大类
    re_list = []
    for f in flist:   # 遍历所有文件,把文件中的数据取出来放入re_list中
        for i in open(f,"r"):
            m = i.strip()
            if m != '':
                re_list.append(m)
    #print(re_list)
                
    #假如之前存在文件,为了避免数据出现重复,删除之前的文件
    if os.path.exists("vul.txt") :
        os.remove("vul.txt")
    elif  os.path.exists("safe.txt"):
        os.remove("safe.txt")
        
    # 使用正则来整理数据
    for i in re_list:
        pat = re.compile(r"\d+.\d+.\d+.\d+ - VULNERABLE")
        res = pat.match(i)
        #print(res)
        if res != None:
            with open("vul.txt","a+") as vf:    #创建vul.txt文件放入没有安装CVE-20190708补丁的主机
                vf.write(i+"\n")
        else:
            with open("safe.txt","a+") as sf:    #创建safe.txt文件放入已经安装CVE-20190708补丁的主机
                sf.write(i+"\n")
    print("已规整好数据")

if __name__ == "__main__":
    #flist = scan_ip()
    flist = ["10_175_101.txt"]    #用已存在的文件检测函数是否能成功执行
    coll_data(flist)

检测的exe文件,链接和提取码如下:
链接:https://pan.baidu.com/s/18AD_UEWxLKjnY_SKG8PJhQ
提取码:6ip9

你可能感兴趣的:(python学习随笔)