用来整理nmap输出结果的,放在win7 64 py2.7下无法执行,提示
对python不是很了解,希望大神可以帮忙看下
import xml.dom.minidom
import sys
import getopt
statstr=""
statstrlist=["open"]
infile=""
outfile=""
infileflag=0
outfileflag=0
statstrflag=0
isstatflag=0
helpflag=0
#chu li can shu
options,args = getopt.getopt(sys.argv[1:],"hni⭕s:",["help","in=","out=","stat"])
for name,value in options:
if name in ("-h","--help"):
print """
xxoo.py
-h,--help print this help
-i,--in read the nmap xml outfile
-o,--out out the result (default: xmlname+_done.txt)
-s,--stat splited by dot (example:open.filtered.close default:open)
-n no status info
"""
helpflag=1
if name in ("-i","--in"):
infile=value
infileflag=1
if name in ("-o","--out"):
outfile=value
outfileflag=1
if name in ("-s","--stat"):
statstrlist=value.split(".")
statflag=1
if name=="-n":
isstatflag=1
#chu li mo ren can canshu
if outfileflag==0:
outfile=infile+"_done.txt"
if statstrflag==0:
statstrlist=["open"]
if helpflag==1:
exit()
#chu li dom
file=open(outfile,"w+")
dom=xml.dom.minidom.parse(infile)
root=dom.documentElement
hostlist=root.getElementsByTagName("host")
for hostnode in hostlist:
for hostchild in hostnode.childNodes:
if hostchild.nodeName=="address":
ip=hostchild.getAttribute("addr")
if hostchild.nodeName=="ports":
for hostchildchild in hostchild.childNodes:
if hostchildchild.nodeName=="port":
for stat in statstrlist:
if hostchildchild.childNodes[0].getAttribute("state")==stat:
if isstatflag==0:
print ip+":"+hostchildchild.getAttribute("portid")+"(("+stat+"))"
file.write(ip+":"+hostchildchild.getAttribute("portid")+"(("+stat+"))"+"\n")
if isstatflag==1:
print ip+":"+hostchildchild.getAttribute("portid")
file.write(ip+":"+hostchildchild.getAttribute("portid")+"\n")
#if hostchildchild.childNodes[0].getAttribute("state")=="open":
#print ip+":"+hostchildchild.getAttribute("portid")+"((open))"
# file.write(ip+":"+hostchildchild.getAttribute("portid")+"((open))"+"\n")
#elif hostchildchild.childNodes[0].getAttribute("state")=="filtered":
# print ip+":"+hostchildchild.getAttribute("portid")+"((filtered))"
# file.write(ip+":"+hostchildchild.getAttribute("portid")+"((filtered))"+"\n")
file.close()