使用python做文件分析

作者: wangcc_sd | 来源:发表于2019-04-11 22:43 被阅读15次

    背景:一个小伙伴让我帮忙分析下文件,样例

    Host: 223.99.141.1 ()   Ports: 80/open/tcp//http//HTTPD/, 646/open/tcp//tcpwrapped///, 832/open/tcp//ssl|netconfsoaphttp?///
    

    想要达到的效果

    223.99.141.1: 80 open tcp  http  HTTPD 
    223.99.141.1: 646 open tcp  tcpwrapped   
    223.99.141.1: 832 open tcp  ssl|netconfsoaphttp?  
    

    就是把其中的ip地址还有端口和协议提取出来,可以用re模块直接匹配出来的,但是re不太熟练,只能这样搞了。。。上代码

    # -*-coding:utf-8 -*-
    # BY WANGCC
    #filename:parse.py
    
    import re,sys,os
    #Host: 223.99.141.24 () Ports: 80/open/tcp//http//nginx/, 443/open/tcp//http//nginx/
    file_name=sys.argv[1]
    put_name=sys.argv[2]
    
    def w_file(data):
        new_f = open(put_name, 'a+')
        new_f.write(data+'\n')
        new_f.close()
    def parser():
        pat = re.compile(' (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) ')
        lines=[]
        with open(file_name,'r') as f:
            for line in f.readlines():
                if "Ports" in line:
                    ip = re.findall(pat, line)
                    str_ip = (" ".join(ip))
                    new_line = re.split(",|:", line)
                    new_line.pop(1)
                    for i in new_line:
                        if len(i)>6:
                            port_Agreement=re.split(r'(?:/|//|\s)\s*',i)
                            str_port_Agreement=(" ".join(port_Agreement))
                            data = (str_ip+":"+str_port_Agreement)
                            w_file(data)
    
    def main():
        if not os.path.exists(file_name) :
            exit('输入文件不存在')
        parser()
        if  os.path.exists(put_name) :
            print('执行成功! ---->', put_name)
        else:
            exit('输出文件不存在,请检查!')
    
    main()
    

    运行样例

    python parse.py a.txt b.txt
    

    整体结果比较简单,但是可以实现需求就行了。。哈哈哈

    相关文章

      网友评论

        本文标题:使用python做文件分析

        本文链接:https://www.haomeiwen.com/subject/panmiqtx.html