python脚本获取H3C SecPath数据输出Excel示例

1、安装pandas、openpyxl、requests模块
python -m pip install --upgrade pip
pip install whl
pip install pandas
pip install openpyxl
pip install requests

2、编写脚本

(列表给pandas处理)

复制代码
from requests.auth import HTTPBasicAuth
import requests
import pandas as pd

url_auth = 'https://192.168.1.10/api/v1/tokens'
user = 'admin'
passwd = 'admin'
requests.packages.urllib3.disable_warnings()
http_token = requests.post(url_auth, auth=HTTPBasicAuth(user, passwd), verify=False)
token_id = http_token.json().get('token-id')
url_acl = 'https://192.168.1.10/api/v1/SecurityPolicies/GetRules'
headers = {"X-Auth-Token": token_id, "Content-type": "application/json", "Accept": "application/json"}
res_acl = requests.get(url_acl, headers=headers, verify=False) #取到的所有ACL数据

dataall=[]
for i in res_acl.json().get('GetRules'):
    datalist = []
    datalist.append(i.get('Name'))
    datalist.append(i.get('SrcZoneList').get('SrcZoneItem'))
    datalist.append(i.get('DestZoneList').get('DestZoneItem'))
    datalist.append(i.get('SrcSimpleAddrList').get('SrcSimpleAddrItem') if 'SrcSimpleAddrList' in i.keys() else 'any')
    datalist.append((i.get('DestSimpleAddrList').get('DestSimpleAddrItem') if 'DestSimpleAddrList' in i.keys() else []) + (i.get('DestAddrList').get('DestAddrItem') if 'DestAddrList' in i.keys() else []))
    datalist.append((i.get('UserList').get('UserItem') if 'UserList' in i.keys() else []) + (i.get('UserGrpList').get('UserGrpItem') if 'UserGrpList' in i.keys() else []))
    datalist.append('启用' if i.get('Enable') else '禁用')
    dataall.append(datalist)
print(dataall)
resdata = pd.DataFrame(dataall, columns=['策略名', '源区域', '目标区域', '源地址', '目的地址/目的地址组', '授权用户/授权用户组', '状态'])
resdata.index = [i for i in range(1, len(resdata.index) + 1)] #修改行号从1开始
resdata.to_excel('rule.xlsx')
复制代码

 (字典给pandas处理)

复制代码
from requests.auth import HTTPBasicAuth
import json
import requests
import pandas as pd

url_auth = 'https://192.168.1.10/api/v1/tokens'
user = 'admin'
passwd = 'admin'
requests.packages.urllib3.disable_warnings()
http_token = requests.post(url_auth, auth=HTTPBasicAuth(user, passwd), verify=False)
token_id = http_token.json().get('token-id')
url = 'https://192.168.1.10/api/v1/OMS/IPv4Objs'
headers = {"X-Auth-Token": token_id, "Content-type": "application/json", "Accept": "application/json"}
res = requests.get(url, headers=headers, verify=False)

# print(json.dumps(res.json()))

datalist = {}
for i in res.json().get('IPv4Objs'):
    datadic = {}
    if i.get('Group') not in datalist.keys():
        datalist[i.get('Group')] = ''
    if i.get('HostIPv4Address'):
        datalist[i.get('Group')] += i.get('HostIPv4Address') + ','
print(datalist)
resdata = pd.DataFrame(pd.Series(datalist), columns=['IP'])  #字典给pd处理的时候是key为列名,value为行,index为默认从0开始,通过series将行和列互换显示,index列也成为了key
resdata = resdata.reset_index().rename(columns={'index': '组名'}) #通过reset_index将在表格最前面新增一列作为index,再将第二列的index列名改为组名
resdata.index = [i for i in range(1, len(resdata.index) + 1)] #将index的序号从1开始
resdata.to_excel('obj.xlsx')
复制代码

 

参考文献:https://zhuanlan.zhihu.com/p/340119918

posted @   Me-lihu  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示