收集网络管理软件上的网段信息
收集网络管理软件上的网段信息 需要用到pubapi来写入数据库 不适用于所有环境,脚本只做技术储备
import mysql.connector
import requests, json
from requests.packages import urllib3
from Basicinterface import executeMysqlData
#从地址库系统里定时拉数据出来,更新到自己的数据库里,如果有自己的网段也可以手动加进去,后续如果地址用处变更则会自动更新相关的条目,如果没有则会新建
apiToken = '33cbb6a54b5fa924e5be1a0917d0b856'
server= '<serverUrl>'
serverQuery = [{'serverIP':server,'apiToken':apiToken}]
urllib3.disable_warnings()
n = 1
subnetDict = {}
for i in serverQuery:
while 1:
try:
response = requests.get(f'https://{i['serverIP']}:8861/api/json/ipam/getAllSubnetSummary?apiKey={i['apiToken']}&&rows=100&page={n}',verify= False)
#print (json.loads(response.text)[" records"])
except:
print(f'{i['serverIP']}获取失败!'
try:
jsonServerData = json.loads(response.text)['rows']
except:
print(f'{i['serverIP']}转换成 json失败!!')
jsonServerData = []
if len(jsonServerData) != θ:
for j in jsonServerData:
subnetCidr = j['subnet-address-cidr']
if subnetCidr not in subnetDict:
subnetDict[subnetCidr] = {}
subnetDict[subnetCidr]['subnetName'] = j['subnet-name']
n += 1
else:
n = 1
break
for i in subnetDict:
#查询数据是否有重复,如没有就写入,否则跳过
subnets = "'"+ i + "'"
nameOfSubnet = "'" + subnetDict[i]['subnetName'] + "'"
querySubnet = f"SELECT * from IPStatus WHERE subnet = {subnets}"
result = readMysqlData(1,querySubnet)
if len(result) == θ :
sql= f"""INSERT INTO IPStatus (subnet, name) VALUES ({"'"+ i + "'"},{"'" + name + "'"})"""
executeMysqlData(3,'write',sql)
elif result[θ][2] == "" or result[θ][2] != subnetDict[i]['subnetName']:
sql= f"""UPDATE IPStatus set name = {"'" + nameOfSubnet + "'"} WHERE subnet = {"'" + subnet + "'"}"""
executeMysqlData(3,'write',sql)