Python:一个用来批量处理文件违规内容并记录的脚本初稿 #!/usr/bin/env python from glob import glob if __name__ == "__main__": ret = {} for f in glob("/home/xinchang.jl/admin_auth/*"): for line in open(f).readlines(): if not line or len(line.split()) < 3: continue user = line.split()[-1] file = f.split("/")[-1] if user.split("@")[0] != file.split("@")[0]: ret[line.split()[-1]] = file else: pass print ret 第二次修改: #!/usr/bin/env python from glob import glob if __name__ == "__main__": ret = {} a = 0 def add_key(username,hostname): global ret if ret.has_key(username): ret[username] += "," + hostname else: ret[username] = hostname for f in glob("/home/xinchang.jl/admin_auth/*"): for line in open(f).readlines(): if not line or len(line.split()) < 3: continue elif line.split()[0] == "ssh-rsa" or line.split()[0] == "ssh-dss": user = line.split()[-1] file = f.split("/")[-1] if user.split("@")[0] != file.split("@")[0]: add_key(user,file) else: pass for host_name in ret.keys(): print host_name,":" h = ret[host_name].split(",") for host in h: print " ",host 第三次修改: #!/usr/bin/env python from glob import glob from optparse import OptionParser parser = OptionParser(usage="%prog [-f] [-q]",version="%prog 1.0") parser.add_option("-f","--file",dest="filename",default="filename",type="string") (options,args) = parser.parse_args() if __name__ == "__main__": ret = {} a = 0 def add_key(username,hostname): global ret if ret.has_key(username): ret[username] += "," + hostname else: ret[username] = hostname for f in glob(options.filename): for line in open(f).readlines(): if not line or len(line.split()) < 3: continue elif line.split()[0] == "ssh-rsa" or line.split()[0] == "ssh-dss": user = line.split()[-1] file = f.split("/")[-1] if user.split("@")[0] != file.split("@")[0]: add_key(user,file) else: pass for host_name in ret.keys(): print host_name,":" h = ret[host_name].split(",") for host in h: print " ",host 最终修订版: #!/usr/bin/env python from glob import glob from optparse import OptionParser parser = OptionParser(usage="%prog [-f] [-q]",version="%prog 1.1") parser.add_option("-f","--file",dest="filename",default="filename",type="string") (options,args) = parser.parse_args() if __name__ == "__main__": ret = {} a = 0 def add_key(username,hostname): global ret if ret.has_key(username): ret[username] += "," + hostname else: ret[username] = hostname for f in glob(options.filename + "/*"): for line in open(f).readlines(): if not line or len(line.split()) < 3: continue elif line.split()[0] == "ssh-rsa" or line.split()[0] == "ssh-dss": user = line.split()[-1] file = f.split("/")[-1] if user.split("@")[0] != file.split("@")[0]: add_key(user,file) else: pass for host_name in ret.keys(): print host_name,":" h = ret[host_name].split(",") for host in h: print " ",host