SecureCRT + Python
14 12 月, 2013,由 frank撰写
前段时间为了重现客户的问题,不得不用脚本来实现。但是由于MAC版本中的ZOC仅仅支持RXEE格式的脚本,用的人太少了,所以果断换回SCRT,本想用之前熟悉的VB简单写一个,发现MAC版的SCRT仅支持Python,索性边学边写了一个简单的小脚本,这个脚本主要涉及循环,random和time模块的调用,没有更多内容,日后会逐渐让其丰满起来
脚本实现的流:
加入一个ACL,观察NSR的状态
如果NSR出现Oper Down,移除ACL并等待30s,再次加入ACL
如果NSR没有变化,等待55-65s之间的任何时间,移除ACL并等待30s,再次加入ACL
一直循环下去,最大为99次
# $language = "Python"
# $interface = "1.0"
# coding = utf-8
import random
import time
#调用python中的随机函数和时间模块
t1 = random.randint(55,65)
#从55到65之间随机选一个赋值给t1
i1 = 1
#设置初始变量i1为1
for i in range(1,100):
#循环99次,2到100
crt.Screen.Send("ipv4 access-group BGP ingress hardware-count interface-statistics\r")
crt.Screen.Send("commit\r")
#代码执行就加入ACL
while i1 <= t1:
#当i1小于等于t1为真时,执行下面内容,否则跳出while循环
crt.Screen.Send("do sh bgp vpnv4 un nei 10.2.0.3 nsr\r")
if (crt.Screen.WaitForString("TCP Oper Down",1) == True):
break
#waitforstring的函数返回值是true和false,如果为真,结束while循环,否则继续
#里面的1必须配置,1s内发现这个字符串
i1 += 1
#i1加1并赋值给i1,也就是1,2,3,4,5,然后跟t1对比
time.sleep(1)
#python中的时间函数,秒为单位,停止1s,感觉比crt里的那个时间函数要好用
#1s后会继续判断i1和t1,除非执行完毕或者触发break
crt.Screen.Send("no ipv4 access-group BGP ingress hardware-count interface-statistics\r")
crt.Screen.Send("commit\r")
time.sleep(30)
#当发现了“TCP Oper Down”后,移除ACL并等待30s继续for的循环
本文出自 Frank's Blog