代码拉取完成,页面将自动刷新
同步操作将从 现任明教教主-乾颐堂/cisco_api 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/usr/bin/env python3
# -*- coding=utf-8 -*-
# 本脚由亁颐堂现任明教教主编写,用于乾颐盾Python课程!
# 教主QQ:605658506
# 亁颐堂官网www.qytang.com
# 教主技术进化论拓展你的技术新边疆
# https://ke.qq.com/course/271956?tuin=24199d8a
import requests
from config import CLIENT_ID, CLIENT_PASS
API_TOKEN_URL = "https://cloudsso.cisco.com/as/token.oauth2"
API_GET_IOS_ADVISORIES = "https://api.cisco.com/security/advisories/ios/?version={0}"
API_GET_IOSXE_ADVISORIES = "https://api.cisco.com/security/advisories/iosxe/?version={0}"
API_GET_LAST_ADVISORIES = "https://api.cisco.com/security/advisories/latest/{0}"
API_GET_SIR = "https://api.cisco.com/security/advisories/severity/{0}/firstpublished?startDate={1}&endDate={2}"
# 获取令牌
def get_api_token(url):
response = requests.post(url,
data={"grant_type": "client_credentials",
"client_id": CLIENT_ID,
"client_secret": CLIENT_PASS
},
headers={"Content-Type": "application/x-www-form-urlencoded",
"Accept": "application/json",
})
if response is not None and response.status_code == 200:
return response.json()
else:
print(response.status_code)
return None
# 查询IOSXE的安全BUG
def get_iosxe_advisories_by_release(client_token, ver):
response = requests.get(API_GET_IOSXE_ADVISORIES.format(ver),
headers={"Authorization": f"Bearer {client_token}",
"Accept": "application/json"})
return response.json()
# 查询IOS的安全BUG
def get_ios_advisories_by_release(client_token, ver):
response = requests.get(API_GET_IOS_ADVISORIES.format(ver),
headers={f"Authorization": f"Bearer {client_token}",
"Accept": "application/json"})
return response.json()
# 查询最新的安全公告
def last_advisories(client_token, counts):
response = requests.get(API_GET_LAST_ADVISORIES.format(counts),
headers={f"Authorization": f"Bearer {client_token}",
"Accept": "application/json"})
return response.json()
# 查询特定时间范围, 特定级别的安全公告
def advisories_severity(client_token, severity, start_date, end_date):
response = requests.get(API_GET_SIR.format(severity, start_date, end_date),
headers={f"Authorization": f"Bearer {client_token}",
"Accept": "application/json"})
return response.json()
if __name__ == '__main__':
raw_token = get_api_token(API_TOKEN_URL)
token = raw_token.get('access_token')
# 查询IOSXE Bug
result_dict = get_iosxe_advisories_by_release(token, "03.06.06.E")
for x in result_dict.get("advisories"):
print(x.get("advisoryId"), x.get("bugIDs"), x.get("cves"), x.get("firstPublished"), x.get("sir"))
# 查询IOS Bug
result_dict = get_ios_advisories_by_release(token, "15.2(4)M6")
for x in result_dict.get("advisories"):
print(x.get("advisoryId"), x.get("bugIDs"), x.get("cves"), x.get("firstPublished"), x.get("sir"))
# 查看特定级别的BUG
result_dict = advisories_severity(token, "critical", "2020-01-01", "2020-05-01")
for x in result_dict.get("advisories"):
print(x.get("advisoryId"), x.get("bugIDs"), x.get("cves"), x.get("firstPublished"), x.get("sir"))
# 查新最新的advisories
result_dict = last_advisories(token, 1)
print(result_dict)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。