⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rep_clean.py

📁 该软件根据网络数据生成NetFlow记录。NetFlow可用于网络规划、负载均衡、安全监控等
💻 PY
字号:
#! /usr/bin/env python################################################################################                                                                             ##   Copyright 2005 University of Cambridge Computer Laboratory.               ##                                                                             ##   This file is part of Nprobe.                                              ##                                                                             ##   Nprobe is free software; you can redistribute it and/or modify            ##   it under the terms of the GNU General Public License as published by      ##   the Free Software Foundation; either version 2 of the License, or         ##   (at your option) any later version.                                       ##                                                                             ##   Nprobe is distributed in the hope that it will be useful,                 ##   but WITHOUT ANY WARRANTY; without even the implied warranty of            ##   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             ##   GNU General Public License for more details.                              ##                                                                             ##   You should have received a copy of the GNU General Public License         ##   along with Nprobe; if not, write to the Free Software                     ##   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA ##                                                                             ################################################################################################################################################################ ## ## Utilities for Nprobe log directories## #### ############################################################################ ############################################################################ import stringfrom sys import argvimport getoptimport osimport refrom sys import exitimport np_warnings            ############################################################################## ##############################################################################CHAN_LABELS = 'ab'CHANGE_CH_LABELS = 0x1DEL_DUMPS = 0x2DEL_ALL_BUT_REPS_AND_DUMPS = 0x4            ############################################################################## ##############################################################################def usage(scriptname):    print 'usage: %s [-h(elp)] [-v(erbose)] [-D(escend)]\n\t[-c(hange channel labels)] [-d(elete dump files)]\n\t[-A delete all but rep and dump files] PATH' % (scriptname)    print    print '\tChange channel labels of form [x].yyy.yyy to X.yyy.yyy'    print '\tif -descend will descend through tree (root PATH) and apply to all'        exit(1)##############################################################################def ch_label(f, v):        nn = os.path.basename(f)    dir = os.path.dirname(f)    change = 0    for lab in CHAN_LABELS:        lt = len(nn)        lstr = '[%s]' % lab        tmp = nn        if string.find(tmp, lstr) == -1:            break        start = 0        nn = ''        while start < lt:            if tmp[start:start+3] == lstr:                change = 1                nn += string.upper(lab)                start += 3            else:                nn += tmp[start]                start += 1    if change:        nn = dir + '/' + nn        if v:            print '%s -> %s' % (os.path.basename(f), os.path.basename(nn))        if os.path.isfile(nn):            change = 0            q = 'File %s already exists: overwrite? ' % (nn)            ans = raw_input(q)            if ans.count('y'):                change = 1        if change:            try:                os.rename(f, nn)            except OSError, s:                print 'FAILED %s' % (s)            return nn                        ##############################################################################    def doit(head, a, descend, ops, verb):    def is_dump_file(f):	if len(f) >= 11 and f[-10:-4] == ".dump.":            return 1        else:            return 0    def is_rep_file(f):	if len(f) >= 10 and f[-9:-4] == ".rep.":            return 1        else:            return 0    def is_keepfile(f):        return (re.match('.*lookups.cache.*', f) \                or re.match('.*server_associations.*', f) \                or re.match('.*delayed_servers.*', f))                    for p in a:        #print a        if len(head):            p = head + '/' + p        if os.path.isfile(p):            #print p            exists = 1            if is_keepfile(p):                print 'keeping', p                continue                        if is_dump_file(p) and (ops & DEL_DUMPS):                if verb:                    #print 'deleting %s' % (os.path.basename(p))                    print 'deleting %s' % (p)                try:                    os.remove(p)                    exists = 0                except OSError, s:                    print 'FAILED %s' % (s)                        if not(is_dump_file(p)or is_rep_file(p)) and (ops & DEL_ALL_BUT_REPS_AND_DUMPS):                if verb:                    #print 'deleting %s' % (os.path.basename(p))                    print 'deleting %s' % (p)                try:                    os.remove(p)                    exists = 0                except OSError, s:                    print 'FAILED %s' % (s)                            if exists and (ops & CHANGE_CH_LABELS):                ch_label(p, verb)        if os.path.isdir(p) and (descend or not len(head)):            if verb:                print 'dir %s' % (p)            doit(p, os.listdir(p), descend, ops, verb)            if (not len(os.listdir(p))) and (ops & DEL_ALL_BUT_REPS_AND_DUMPS):                if verb:                    print 'removing directory %s' % (p)                try:                    os.rmdir(p)                except OSError, s:                    print 'FAILED %s' % (s)                return##############################################################################    def main():    scriptname = os.path.basename(argv[0])    verbose = 0    descend = 0    ops = 0        try:        optlist, args = getopt.getopt(argv[1:], 'hvdcDA')    except getopt.error, s:        print '%s: %s' % (scriptname, s)        usage(scriptname)        exit(1)    for opt in optlist:        if opt[0] == '-h':            usage(scriptname)        if opt[0] == '-v':            verbose = 1        if opt[0] == '-D':            ans = raw_input('descend? y/n ' )            if ans.count('y'):                descend = 1        if opt[0] == '-d':            ans = raw_input('delete dump files? y/n ' )            if ans.count('y'):                ops += DEL_DUMPS        if opt[0] == '-c':            ans = raw_input('change channel labels? y/n ' )            if ans.count('y'):                ops += CHANGE_CH_LABELS        if opt[0] == '-A':            ans = raw_input('delete all but rep and dump files? y/n ' )            if ans.count('y'):                ops += DEL_ALL_BUT_REPS_AND_DUMPS    if not len(args):         print '%s - no operational directory' % (scriptname)         usage(scriptname)    if ops == 0:        print 'No ops specified'        usage(scriptname)             flist = []    doit('', args, descend, ops, verbose)        return                         ############################################################################### Call main when run as scriptif __name__ == '__main__':        main()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -