许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  在Nexus 3000/9000交换机中开发、调试和部署NX-SDK Python应用程序

在Nexus 3000/9000交换机中开发、调试和部署NX-SDK Python应用程序

阅读数 3
点赞 0
article_banner

背景

  • Cisco NX-SDK允许开发定制应用程序,这些应用程序可以运行在Nexus 9000和Nexus 3000的NX-OS平台上。NX-SDK为客户提供了创建自己的CLI命令和输出、生成响应特定事件的定制系统日志、流定制遥测等功能。

使用 NX  -SDK开发Python应用程序

启用NX-SDK

要运行任何NX-SDK应用程序,必须首先在设备上启用NX-SDK功能:
switch(config)#feature nxsdk

创建一个Python文件

  • 可以使用NX-OS Bash shell创建和编辑Python文件。为了使用Bash shell,必须首先在设备上启用它:
    switch(config)#feature bash-shell
  • 输入Bash shell并使用vi文本编辑器创建和编辑Python文件:
    switch(config)
    #run bash bash-4.2 $ vi /isan/bin/nxsdk-app.py
注意:最佳做法是在/ isan / bin / 目录中创建Python文件。Python文件需要执行权限才能运行 - 不要将Python文件放在/ bootflash 目录或其任何子目录中。 不需要通过NX-OS创建和编辑Python文件。开发人员可以使用他们的本地环境创建应用程序,并使用他们选择的文件传输协议将完成的文件传输到设备。但是,对于开发人员来说,使用NX-OS实用程序对其脚本进行调试和故障排除可能更有效。

实施NX-SDK组件

  • 建议从NX-SDK GitHub 开始创建NX-SDK Python应用程序。
  • NX-SDK Python应用程序需要四个主要组件:
       

sdkThread功能

  • (thread线程)
  • 功能:用于启动NX-SDK应用程序并修改与应用程序相关的各种选项。
  • 所有Python NX-SDK应用程序都要调用nx_sdk_py库中的三个方法:
       
  • 常用的一些方法:
       

创建自定义CLI命令

  • 在使用NX-SDK的Python应用程序中,在sdkThread函数中创建和定义自定义CLI命令。有两种类型的命令:显示命令和配置命令。
       
	import nx_sdk_py
	sdk = nx_sdk_py.NxSdk.getSdkInst(len(sys.argv), sys.argv)
	
	# 该对象可用于执行已存在的CLI命令以及创建自定义CLI命令
    cliP = sdk.getCliParser() 
	
	# 创建show命令:
	nxcmd1 = cliP.newShowCmd("cmd_name","syntax")
	# 创建config命令:
	nxcmd2 = cliP.newConfigCmd("cmd_name","syntax")
  • nxcmd1 = cliP.newShowCmd("cmd_name","syntax") syntax:描述了什么关键字和参数可以在命令中使用。 例如:show ip route 192.168.1.0中的192.168.1.0。show mac address-table dynamic中的dynamic。 返回NxCliCmd对象,函数cliP.newCliCmd(“cmd_type”,“cmd_name”,“syntax”)的子类。
  • nxcmd1.updateParam("<parameter>","help_str",type) <parameter> :命令参数的名称。 help_str:设置自定义命令的帮助字符串,并显示在通过CLI上的问号访问的NX-OS上下文相关帮助菜单中 type参数中指定的参数的有效类型: P_INTEGER - 指定任何整数 P_STRING - 指定任何字符串 P_INTERFACE - 指定任何网络接口 P_IP_ADDR - 指定任何IP地址 P_MAC_ADDR - 指定任何MAC地址 P_VRF - 指定任何虚拟路由和转发(VRF)实例 如nx_sdk_py.P_IP_ADDR) -nxcmd1.updateKeyword("keyword","help_str",is_key) keyword 要修改的命令关键字的名称 is_key是一个可选的布尔值,默认为False。如果is_key为True,则使用此关键字的命令创建的唯一配置不会覆盖该命令创建的其他唯一配置。
  • 船舰自定义CLI命令后,需要创建pyCmdHandler类的对象,并将其设为NxCliParser对象的CLI回调处理程序对象。具体如下:
cmd_handler = pyCmdHandler()
cliP.setCmdHandler(cmd_handler)

pyCmdHandler 类  

  • class pyCmdHandler(nx_sdk_py.NxCmdHandler):
  • def postCliCb(self,clicmd)::定义了在sdkThread函数中定义的定义CLI命令在设备上的行为。
       
  • nx_sdk_py.void_to_int 将值转换为整数类型。
  • nx_sdk_py.void_to_string 将值转换为字符串类型。

pyCmdHandler类举例

  • ip_move:跟踪Cisco Nexus上各接口之间用户指定的IP地址的移动

自定义CLI命令语法示例

关键字

此show命令接受单个关键字mac并添加一个帮助字符串。

 nx_cmd = cliP.newShowCmd("show_misprogrammed", "mac") 
 nx_cmd.updateKeyword("mac", "Shows all misprogrammed MAC addresses on this device") 

单参数

此命令使用单个参数< mac >,(<>表示这是一个参数)。参数中添加了一个用于检查错误编程的MAC地址辅助字符串。
nx_sdk_py.P_MAC_ADDR参数用于将参数的类型定义为MAC地址,从而防止最终用户输入其他类型,例如字符串,整数或IP地址。

nx_cmd = cliP.newShowCmd("show_misprogrammed_mac", "<mac>") 
 nx_cmd.updateParam("<mac>", "MAC address to check for misprogramming", nx_sdk_py.P_MAC_ADDR) 

可选关键字或参数

  • 可选加外面加[]。

nx_cmd = cliP.newShowCmd( "show_misprogrammed_mac" , "[mac]" )
nx_cmd = cliP.newShowCmd("show_misprogrammed_mac", "[<mac>]")

单关键字和参数

nx_cmd = cliP.newShowCmd("show_misprogrammed", "mac <mac-address>") 
 nx_cmd.updateKeyword("mac", "Check MAC address for misprogramming") 
 nx_cmd.updateParam("<mac-address>", "MAC address to check for misprogramming", nx_sdk_py.P_MAC_ADDR) 

多个关键字和参数

nx_cmd = cliP.newShowCmd("show_misprogrammed", "(mac <mac-address> | ip <ip-address>)") 
 nx_cmd.updateKeyword("mac", "Check MAC address for misprogramming") 
 nx_cmd.updateParam("<mac-address>", "MAC address to check for misprogramming", nx_sdk_py.P_MAC_ADDR) 
 nx_cmd.updateKeyword("ip", "Check IP address for misprogramming") 
 nx_cmd.updateParam("<ip-address>", "IP address to check for misprogramming", nx_sdk_py.P_IP_ADDR) 

具有可选关键字的多个关键字和参数

nx_cmd = cliP.newShowCmd("show_misprogrammed", "(mac <mac-address> | ip <ip-address>) [clear]") 
 nx_cmd.updateKeyword("mac", "Check MAC address for misprogramming") 
 nx_cmd.updateParam("<mac-address>", "MAC address to check for misprogramming", nx_sdk_py.P_MAC_ADDR) 
 nx_cmd.updateKeyword("ip", "Check IP address for misprogramming") 
 nx_cmd.updateParam("<ip-address>", "IP address to check for misprogramming", nx_sdk_py.P_IP_ADDR) 
 nx_cmd.updateKeyword("clear", "Clears addresses detected to be misprogrammed") 

具有可选参数的多个关键字和参数

nx_cmd = cliP.newShowCmd("show_misprogrammed", "(mac <mac-address> | ip <ip-address>) [<module>]") 
 nx_cmd.updateKeyword("mac", "Check MAC address for misprogramming") 
 nx_cmd.updateParam("<mac-address>", "MAC address to check for misprogramming", nx_sdk_py.P_MAC_ADDR) 
 nx_cmd.updateKeyword("ip", "Check IP address for misprogramming") 
 nx_cmd.updateParam("<ip-address>", "IP address to check for misprogramming", nx_sdk_py.P_IP_ADDR) 
 nx_cmd.updateParam("<module>", "Clears addresses detected to be misprogrammed", nx_sdk_py.P_INTEGER) 


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空