NX-API简介

本文档介绍了Cisco Nexus设备上的NX-API功能,这是一种通过REST接口实现CLI命令的方法。通过启用NX-API,可以使用HTTP/HTTPS进行配置操作和Linux Bash命令。文章详细阐述了如何启用NX-API,如何在开发者沙箱中进行REST API调用,使用POSTMAN进行测试,以及如何用Python与NX-OS进行交互以获取系统信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源:https://developer.cisco.com/learning/lab/nxos-intro-03_nxapi-rest/step/1
了解更多:https://developer.cisco.com/site/cisco-nexus-nx-api-references/

概观

  • 在Cisco Nexus设备中,最常用的配置方法是使用仅在设备上运行的命令行界面(CLI),该方法具有局限性。思科提供NX-API REST:
    • 提供交换机外部可用的特定CLI。
    • 将配置操作组合到相对较少的HTTP/HTTPS操作中。
    • 使用POST作为传递方法。
  • NX-API REST不仅支持show命令、基本和高级交换机配置,还可以运行Linux Bash命令。
  • 在后端,NX-API REST使用Nginx HTTP服务器。可以指示Nginx服务器以XML或JSON格式返回所请求的数据。

步骤1.启用NX-API功能

步骤2.从NX-API Developer Sandbox进行REST API调用

地址:https://sbx-nxos-mgmt.cisco.com
admin / Admin_1234!

步骤3.使用POSTMAN进行NX-API REST调用

  • 便于进行分解动作,调试。
  1. 拿token
    POST:https://sbx-nxos-mgmt.cisco.com/api/aaaLogin.json
    body中:
       {
     "aaaUser": {
       "attributes": {
         "name": "admin",
         "pwd": "Admin_1234!"
       }
     }
    }
    

2.添加一个loopback接口来管理、更新路由器。

  • https://sbx-nxos-mgmt.cisco.com/api/mo/sys/intf/lb-[lo30].json
    • lb-[lo30].json表示它是一个环回接口,其中30设置为虚拟接口号。
  • GET,再POST
 {
     "l3LbRtdIf" : {
       "attributes" : {
         "descr": "My Learning Lab Loopback"
       }
     }
 }

步骤4.使用Python与NX-OS交互

  • 以下Python代码获取系统信息,并以漂亮的格式打印出主机名,序列号,正常运行时间和当前设备状态
  • ~\nxos-code\intro-nxapi\get_sys_info.py
import requests, urllib3

# Disable Self-Signed Cert warning for demo
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

# Assign requests.Session instance to session variable
session = requests.Session()

# Define URL and PAYLOAD variables
URL = "https://sbx-nxos-mgmt.cisco.com/api/aaaLogin.json"
PAYLOAD = {
          "aaaUser": {
            "attributes": {
              "name": "admin",
              "pwd": "Admin_1234!"
               }
            }
          }

# Obtain an authentication cookie
session.post(URL,json=PAYLOAD,verify=False)

# Define SYS_URL variable
SYS_URL = "https://sbx-nxos-mgmt.cisco.com/api/mo/sys.json"

# Obtain system information by making session.get call
# then convert it to JSON format then filter to system attributes
sys_info = session.get(SYS_URL,verify=False).json()["imdata"][0]["topSystem"]["attributes"]

# Print hostname, serial nmber, uptime and current state information
# obtained from the NXOSv9k
print("HOSTNAME:", sys_info["name"])
print("SERIAL NUMBER:", sys_info["serial"])
print("UPTIME:", sys_info["systemUpTime"])

  • 输入以下命令运行脚本
$ python get_sys_info.py
HOSTNAME: NXOSv9k-REST-API
SERIAL NUMBER: 9CNCP82CNY5
UPTIME: 01:16:13:49.000
CURRENT STATE: out-of-service
$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值