首页 > 其他分享 >使用restful请求华三模拟器上的设备接口数据

使用restful请求华三模拟器上的设备接口数据

时间:2024-04-27 11:55:25浏览次数:23  
标签:华三 name url RESTful self 接口 headers restful 模拟器

一、resful介绍

RESTful采用C/S模型。RESTful客户端为使用Python、Ruby或Java等编程语言开发出的RESTful客户端程序或脚本。RESTful服务器为网络设备。通过RESTful功能配置和维护设备的过程为:

(1) 客户端向服务器发送HTTP/HTTPS请求报文,通过HTTP的方法来操作指定的RESTful API接口。RESTful支持的HTTP操作方法包括GET、PUT、POST和DELETE。

(2) 服务器根据HTTP/HTTPS请求报文,完成对指定RESTful API接口的操作后,通过HTTP/HTTPS应答报文将操作结果返回给客户端。

在HTTP/HTTPS请求和应答报文中,请求和应答数据均采用JSON格式进行编码。

二 实验搭建

使用HCL模拟器添加一台网络设备关联本地网卡,

在设备进行基础配置

# 配置互联IP
interface GigabitEthernet1/0/0
ip address 192.168.1.198 255.255.255.0

# 放通策略
security-policy ip
rule 0 name pass_all
action pass

# 接口加入安全域
security-zone name Trust
import interface GigabitEthernet1/0/0

# 开启restful功能
restful https enable

# 创建本地账号并开启对应https http功能
local-user admin class manage
password simple acdbk@9182
service-type http https
authorization-attribute user-role network-admin

# 设备账号的 restful 权限
role name admin
rule 1 permit read xml-element rpc/
vlan policy deny
permit vlan 1
permit vlan 4094
#

配置完后在本地测试端口联通性

import requests
import base64
import pandas as pd
import urllib3


class Rsful_Device:
    def __init__(self, user, passwd, host):
        """
        :param user: 网络设备的用户名
        :param passwd: 网络设备的密码
        :param host: 网络设备的地址和端口,如果https采用其他端口直接拼接在后面 例 192.168.1.1:8443
        """
        self.host = host
        url = f'https://{host}/api/v1/tokens'
        # 组合用户名和密码,使用冒号连接
        credentials = f'{user}:{passwd}'
        # 对组合后的字符串进行BASE64编码
        encoded_credentials = base64.b64encode(credentials.encode('utf-8')).decode('utf-8')
        encoded_credentials = 'Basic ' + encoded_credentials
        # 定义登录请求头
        headers = {"Authorization": encoded_credentials, "Content-type": "application/json",
                   "Accept": "application/json"}
        print(url, headers)
        # verify=False 表示不进行证书验证
        login_req = requests.post(url, headers=headers, verify=False)
        self.token = login_req.json()['token-id']
        # 拼接后续请求用的请求头
        self.headers = {"X-Auth-Token": self.token, "Content-type": "application/json", "Accept": "application/json"}
        # print(self.headers)
        # print(self.token)

    def get(self, url):
        """
        url示例 其他接口可以参考华三官网API接口文档
        /api/v1/Ifmgr/Interfaces   #获取接口数据
        /api/v1/SecurityPolicies/GetRules  #获取防火墙规则
        """
        url = f'https://{self.host}{url}'
        req = requests.get(url, headers=self.headers, verify=False)
        return req


def write_to_excel(data, filename):
    # Create a DataFrame from the data
    df = pd.DataFrame(data)
    column_headers = []
    for i in data:
        for key, value in i.items():
            column_headers.append(key)
        break
    # Reorder the columns according to the specified headers
    df = df[column_headers]
    # Write the DataFrame to an Excel file
    df.to_excel(filename, index=False)


if __name__ == '__main__':
    # 取消不安全验证的请求告警
    urllib3.disable_warnings()
    # 初始化一台设备
    FW1060 = Rsful_Device('admin', 'acdbk@9182', '192.168.1.198')
    # 获取设备的接口数据写入到表格中
    inter_data = FW1060.get('/api/v1/Ifmgr/Interfaces').json()['Interfaces']
    print(inter_data)
    write_to_excel(inter_data, 'F1060_接口数据.xlsx')

三、接口数据展示

部分字段解释

Column name Column description Column type Data type and restrictions Remarks
IfIndex Interface index Index Unsigned integer. N/A
Name Full name of an interface N/A String. Read-only.
Length: 2 to 47 characters.
AbbreviatedName Abbreviated name of an interface N/A String. Read-only.
Length: 2 to 47 characters.
PortIndex Port index N/A Unsigned integer. Read-only.
Value range: 0 to 65535.
ifTypeExt Interface extension type N/A Unsigned integer. Read-only.
For more information, see Table 2.
ifType Interface type N/A Unsigned integer. Read-only.
Additional values for ifType are assigned by the Internet Assigned Numbers Authority (IANA) through updating the syntax of the IANA ifType textual convention.
Description Interface description N/A String. N/A
Length: 1 to 255 characters.
AdminStatus Interface administration status N/A Enumeration: N/A
1—Administratively up.
2—Administratively down.
OperStatus Interface operation status N/A Enumeration: Read-only.
1—up. For more information, see Table 1.
2—down.
3—testing.
4—unknown.
5—dormant.
6—notPresent.
7—lowerLayerDown.

更多API接口和详细介绍可以参考华三官方文档

标签:华三,name,url,RESTful,self,接口,headers,restful,模拟器
From: https://www.cnblogs.com/libaitong/p/18161855

相关文章

  • 基于禅道restful接口的二次开发-获取token
    使用禅道的时候,可能会想用禅道的接口来做一些二次开发,比如获取缺陷情况、案例执行情况,做一些统计报表的展示。根据禅道开发文档中相关说明,在禅道开源版16.0+,专业版11.0+,企业版6.0+,旗舰版2.4+新增RESTful风格API,因此可以利用api来获取相关的数据访问地址:http://****/zentao/a......
  • RPC请求跟普通Restful请求区别?
    RPC(RemoteProcedureCall,远程过程调用)请求和普通的RESTful请求在设计理念、通信方式、协议等方面有一些区别:设计理念:RPC请求:RPC是一种面向过程的通信模式,其设计目的是让远程调用像本地调用一样简单,它的核心思想是调用远程服务的方法。RESTful请求:RESTful是一种基于资......
  • 第19章 创建RESTful Web服务
    1准备工作2理解RESTfulWeb服务Web服务最常见的方法是采用具象状态传输(RepresentationalStateTransfer,REST)模式。REST指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或者设计就是RESTful,核心就是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的......
  • HTTP&RestFUL
    HTT&PRESTREST,全称是RepresentationalStateTransfer,中文意为表现层状态转移。它是一种设计风格,而不是标准,主要用于客户端和服务器交互类的软件。RESTful是实现REST设计风格的web服务。资源状态转换,在web中资源的唯一标识式URL,通过URL路径定位网上的资源。HTTP,全称是H......
  • mumu模拟器上微信安装目录缓存目录
    前言全局说明mumu模拟器上微信安装目录缓存目录一、微信安装目录/storage/emulated/0/Android/data/com.tencent.mm二、缓存目录/data/data/com.tencent.mm/cache/<一串32位数字>/finder/video三、四、免责声明:本号所涉及内容仅供安全研究与教学使用,如出现......
  • IEC104 从站/服务端模拟器 调试工具推荐
    目录IEC104从站/服务端模拟器调试工具推荐主要功能软件截图IEC104从站/服务端模拟器调试工具推荐下载地址:http://www.redisant.cn/iec104serverIEC60870-5-104,通常简称为IEC104,是国际电工委员会(IEC)制定的用于远程监控和控制的通信协议标准。它是IEC60870-5系列标准的一......
  • 上架即封神!3.6k Star 的开源游戏模拟器,Delta 冲上 App Store 免费榜
    一直以来,苹果设备的应用商店(AppStore)都是禁止游戏模拟器上架,所以iPhone/iPad用户不能直接安装GBA、红白机之类的模拟器应用,这也让想在iPhone上重温童年游戏机的机友们,十分羡慕Android用户。现在,iPhone/iPad用户终于可以光明正大地在国服「AppStore」下载游戏机模拟器......
  • 模拟器搭建流程
    第一个文件mmap_drvUbuntu中在客户端打开桌面文件mmap_drv这是个驱动文件,sudomake是编译命令,如果需要清理生成的驱动文件那就输入sudomakeclean.前面下驱动的指令已经完成并且安装第二个文件event_drvevent_drv文件也一样cd到他的位置然后sudomakeclean干净后再sudomake......
  • “RPC 好,还是 RESTful 好?” 不要选错了!
    RPC主要是基于TCP/IP协议的,而HTTP服务主要是基于HTTP协议的,我们都知道HTTP协议是在传输层协议TCP之上的,所以效率来看的话,RPC当然是要更胜一筹啦!下面来具体说一说RPC服务和HTTP服务。OSI网络七层模型在说RPC和HTTP的区别之前,我觉的有必要了解一下OSI的七层网络结构模型(虽然实际应......
  • 比较RPC和RESTful API的优缺点
    RPC和RESTfulAPI是两种不同的远程调用方式,它们各自具有不同的优缺点。RPC的优点包括:高效:RPC使用自定义的通信协议,可以减少报文传输量,提高传输效率。灵活:RPC支持多种语言,不同的编程语言可以方便地调用远程接口。通用:RPC可以基于XML、JSON等标准化的数据格式进行通信,使得不同......