在设备自动上线时,Python比TCL好用吗?

a511869fc98ca0f58e422ba480b69a54.gif

正文共:1314 字 11 图,预估阅读时间:3 分钟

1b44be1b17a29cf8eac9581da21dc05e.png

世人都言Python好,简单易学效率高。

Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现了面向对象编程使用Python脚本实现SSH登录设备

其实,H3C Comware V7系统不仅内嵌了TCL解析器TCL + 自动配置功能 = 设备自动上线,还内嵌了Python解释器,可以直接在设备上使用Python2.7版本的命令和标准API。

25731f739ea1817c9e537db871a0e3a1.png

Python解析器

16258df8ff7e02ffc2299cd669d358cb.png

H3C Comware V7系统内嵌了Python解释器。用户可以进入Python shell,使用Python的命令、标准API和扩展API;还可以直接在设备上执行Python脚本,以方便自动化配置系统。

在用户视图下执行python命令即可进入Python shell视图。

228dd749d3d5edf25079c1fd8ea918bc.png

在Comware V7中提供的扩展Python API,扩展Python API必须遵循标准Python语言语法。在使用扩展Python API时,必须先导入Comware包,导入方法有两种:

1、用import comware引入整个Comware包,在执行具体API的时候用comware.API。

1b700f5f3b1045ad725609584b9c0bcb.png

方法二:用from comware import API引入单个API。

1b76e05388d06a85b57ba0d906ed7331.png

需要注意,Python视图下开头不要有空格,不然就会像这样,而且不支持一些快捷键,如果需要修改,那就是左右移动,再加上回删键(BackSpace)

c515b8a298ec8306c055e5e49b114075.png

关于Comware的Python扩展,可以参阅H3C官网手册。主要如下:

7c0ea92ff50a20df7cacdc1c80e4ceb1.png

CLI类

CLI(command=‘’, do_print=True)
CLI.get_output()

e6ed372aa47d57759a848d534a01f6de.png

Transfer类

Transfer(protocol=‘’, host=‘’, source=‘’, dest=‘’, vrf=‘’, login_timeout=10, user=‘’, password=‘’)
Transfer.get_error()

c8c5c15931abac8c4cd607ce37818da4.png

API类

get_self_slot()
get_standby_slot()

38cc5c3b25c08751456a5f2439d72ade.png

Python配置文件

72dbc912cee02425425cb0cd8610960e.png

好,相信你对Python配置已经有了一定了解一起学习几个简单的Python算法实现,那么我们来写一份Python配置文件device.py。

其实很简单,加上一个文件说明(#!usr/bin/python),说明这是一个Python文件,再把上次的TCL文件整合到一行,用分号隔开即可。

device.py文件内容如下:

#!usr/bin/python
import comware
comware.CLI(‘system-view ; sysname H10086C ; interface GigabitEthernet0/0 ; ip address dhcp-alloc ; line con 0 ; idle-timeout 0 0 ; save force ; return’)

11eb79a8790190e2823417ca52cea67a.png

实验组网

10f7e256e41a3ca6b1d6948dc6865962.png

还是那张祖传的随意拓扑,实验环境为HCL。路由器MSR36-20(Version 7.1.075, Alpha 7571),是本次测试的自动配置上线设备;交换机S5820V2-54QS-GE(Version 7.1.075, Alpha 7571),承担DHCP服务器的角色;PC上安装HFS,作为存储设备配置的HTTP服务器。

2863de04c69071ba1f2481db42f522dd.png

f5f7df97d71b227b7a21a98d4568ae39.png

配置DHCP服务器

a7ad3dea4abe15e1fa2ec0396ff20e44.png

跟上个使用TCL的实验相比,修改使用bootfile-name命令配置DHCP客户端使用的启动文件名为device.py即可。

那么交换机的配置如下:

#
sysname DHCP-Server
#
dhcp enable
#
vlan 1
#
vlan 10
#
dhcp server ip-pool ztp
 gateway-list 172.16.113.254
 network 172.16.113.0 mask 255.255.255.0
 bootfile-name http://192.168.56.1/device.py
#
interface Vlan-interface1
 ip address 172.16.113.254 255.255.255.0
#
interface Vlan-interface10
 ip address 192.168.56.10 255.255.255.0
#
interface GigabitEthernet1/0/1
 port link-mode bridge
#
interface GigabitEthernet1/0/2
 port link-mode bridge
#
interface GigabitEthernet1/0/3
 port link-mode bridge
#
interface GigabitEthernet1/0/4
 port link-mode bridge
 port access vlan 10

35bf0801651fffb21676ae5cc7daa722.png

开始设备自动上线

91ad608dd04614e979819f2eb8c34996.png

配置好电脑端的HFS,将配置文件放到指定目录下。

e9e5651e9b474a22a7ec6b6f5b719a45.png

将MSR2开机启动,依旧是第二次获取到配置文件。

bccab9ef7d99d19bbe4486bd11b0e13d.png

但是竟然报错了,检查一下本地运行有没有问题。

1b4aeb3b25c5cb72f6cd0db233d9ecab.png

好像是编码的问题,单引号的格式不一样,正常敲出来是‘’成对的,但是命令行里面需要是两个',先空跑一遍,执行成功,把执行成功的命令粘到配置文件中。

修改device.py文件内容如下:

#!usr/bin/python
import comware
comware.CLI('system-view ; sysname H10086C ; interface GigabitEthernet0/0 ; ip address dhcp-alloc ; line con 0 ; idle-timeout 0 0 ; save force ; return ')

再回过来用MSR3看自动配置上线过程,成功下载device.py,并成功执行脚本命令。

e65421a638202ea94a33c70fcd4eea3a.png

使用Python的方式,还能看到命令下发过程,NICE278877b86ece2c0d1cb80c2df2c808dd.png。设备名称配置成功,地址获取成功,配置保存成功。

看来官网案例又有问题,示例里面的引号用的不对,大家复制粘贴我的就好了。

0d971fee3fa9fb5d5d9f4b7cd103dad8.png

从抓包看一下过程。

11a9544ba9053bbbbbf17fd58854dfd0.png

首先是设备通过DHCP获取IP地址,然后是请求device.py,下载之后直接运行。而且,因为是HTTP协议,可以直接看到请求的文件内容。

哎,MSR4这次都没有登场。

f48d502b2d044cafa32f53b8b7e194d9.png

总结

d44f497b0712bd4b48a0a18179ad75a7.png

1、使用Python配置和使用TCL命令、手工配置命令的方式、逻辑都比较像,但是要注意Python文件的段落格式以及字符格式等问题;

2、Python视图下开头不要有空格,不然就报错,而且不支持一些快捷键,如果需要修改,那就是左右移动,再加上回删键(BackSpace);

3、华三官网的命令示例又出了问题,大家需要注意单引号的格式问题。

31ca0b779031014a97767887fea281f3.gif

长按二维码
关注我们吧

4b68d6124f75826d8b9d01381e1a64c3.jpeg

d409c6de4a81dbb268fa5c8a9f1b30c4.png

我今天学习了一下3个perf:iperf、netperf和qperf

不会吧?网络工程师的知识圣经-RFC文档,你还不知道怎么查?

Windows 7无视TPM检测直升Windows 11

授人以鱼不如授人以渔,希望通过此“文章合集”复刻一个高级网络工程师出来!

软路由是啥?OpenWrt又是啥?长啥样?在VMware装一个瞅瞅

TCL + 自动配置功能 = 设备自动上线

作者:Danileaf_Guo

物联沃分享整理
物联沃-IOTWORD物联网 » 在设备自动上线时,Python比TCL好用吗?

发表回复