嗯,这对我来说只是各种奇怪。我一直在研究这个脚本来自动执行一些nmap扫描,并将它们转储到数据库中,希望能够进行比较并找出哪些端口在上次扫描期间可能没有打开。该脚本如下所示,它在第一次测试运行时效果很好,但是当我更改hostlist变量以扫描不同的子网时,它就退出了工作状态。扫描花了比正常情况更长的WAAAY,当它最终出错时,它只打印了两到三个屏幕
"(decreasing to 2.0\nRTTVAR has grown to over 2.3 seconds)"
它将在2.0到2.3秒之间交替,但这几乎是我被转储到stdout的垃圾邮件。我第一次运行脚本并且它工作了我没有那里的日检查器,但当我评论那些并尝试再次运行它的方式它是第一次工作,新的子网作为唯一差异,它仍然是borked。对于发生了什么的任何想法?脚本如下。不介意我实际上没有使用结果变量,它是一个年轻的脚本,我还在学习nmap模块;)
#!/usr/bin/python
# automated nmap scanning script
import nmap
import MySQLdb
#import datetime
# initialize port scanner and hosts to be scanned
nm = nmap.PortScanner()
#if datetime.datetime.today().weekday() == 2:
hostlist = 'XXX.XXX.XXX.0/24'
# open database connection and prepare a cursor
db = MySQLdb.connect("XXXX","XXXX","XXXX","XXXX")
cursor = db.cursor()
# scan
results = nm.scan(hosts=hostlist, arguments='-PN')
for item in nm.all_hosts():
# print('Host: %s (%s)') % (item, nm[item]['hostname'])
if 'tcp' in nm[item]:
for port in nm[item]['tcp'].keys():
# print("\t %s") % (port)
sql = "INSERT INTO scanresults (ipaddress, port) VALUES ('%s', '%s')" % (item, port)
try:
cursor.execute(sql)
db.commit()
except:
print "There was an error!"
db.rollback()
db.close()