python - 使用python进行Nmap扫描并存储在mysql中
问题描述
python代码使用nmap扫描一系列ip,然后将这些ip单独存储在mysql表中。
当我们需要扫描一个ip范围时如何扫描,例如172.27.20.130-140。并将所有ips存储在mysql表中。现在需要搜索一个范围,并且每个 ip 都应该存储在表中。
#NMAP SCANNING CODE
nmScan=nmap.PortScanner()
host=self._firstname.value # taking input from a pyforms gui input field
result=nmScan.scan(hosts=host, arguments='-sV -v -p 1-1024')
print('Host : %s (%s)' % (host, nmScan[host].hostname()))
print('State : %s' % nmScan[host].state())
for proto in nmScan[host].all_protocols():
print('----------')
print('Protocol : %s' % proto)
lport = nmScan[host][proto].keys()
#lport.sort()
for port in lport:
thisDict = nmScan[host][proto][port]
print ('port : %s\tstate : %s\tVersion:%s,v%s'% (port, nmScan[host][proto][port]['state'],thisDict['product'] ,thisDict['version']))
#INSERT into INPUT table CODE
try:
connection = mysql.connector.connect(host='localhost',
database='testdb',
user='root',
password='Pooja@123')
cursor = connection.cursor()
sql_insert_query = """ INSERT INTO input (sno,ip) VALUES (%s,%s)"""
so=cursor.lastrowid
sno=so
ip=self._firstname.value # taking input from a pyforms gui input field
insert_tuple = (sno,ip)
result = cursor.execute(sql_insert_query, insert_tuple)
print("inserted")
connection.commit()
except mysql.connector.Error as error :
connection.rollback() #rollback if any exception occured
print("Failed inserting record into input table {}".format(error))
finally:
#closing database connection.
if(connection.is_connected()):
cursor.close()
connection.close()
print("MySQL connection is closed")
解决方案
该ipaddress
模块对这种类型的事情很有用:
In [1]: import ipaddress
In [2]: addr = ipaddress.IPv4Address('172.27.20.130')
In [3]: print(addr)
172.27.20.130
In [4]: print(addr + 1)
172.27.20.131
推荐阅读
- c++ - 根据条件将类型转换为不同的类
- python - 如何在 Pygame 中的不同对象的事件中设置多个计时器?
- javascript - 如果 JavaScript 对象当前为 null,为什么它们不会为嵌套对象设置值
- php - 在 symfony 中使用 office365 服务器和 swiftmailer 发送电子邮件
- c# - 如何修复“SQLException 未处理”System.Data.dll 中出现“System.Data.SqlClient.SqlException”类型的未处理异常
- excel - 如何使用 VBA 将单元格区域的颜色复制到其他单元格区域
- javascript - 当我单击浏览器第一页中的按钮时如何重新加载第二页?
- java - 为什么if条件语句中的几个逻辑或条件的顺序不一样,结果也不一样?
- node.js - 如何在不进行 npm install 的情况下更新 package-lock.json?
- c++ - 在命令终端中编译 ffmpeg 代码时遇到问题