基于VBS实现SecureCRT的命令自动输入和自动记录

本文介绍了一种利用SecureCRT结合VBScript实现网络设备自动化巡检的方法。针对JuniperSRX3600、H3CS12518及F5-2400等设备,通过编写并运行特定脚本,自动完成设备状态检查,提高运维效率。

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

1.功能概述      

       目前在从事运维工作,因为看到网络设备巡检工作比较重复单调,于是萌生了写脚本将巡检命令自动输入的念头。虽然目前运维有更多高级的方法,可是SecureCRT界面简单,使用方便,仍然有其用武之地。目前网上资料并不多,在实现的过程中也遇到不少困难,因为决定写一篇文章分享一下自己的经验,给有需要的小白们一些参考。

      笔者工作的场景主要使用的网络设备有Juniper SRX3600,H3C S12518,F5-2400,因此为这些设备实现了自动巡检,主要检查的项目有

      Juniper SRX 3600:
   (1)机箱告警(chassis alarms)
   (2)系统告警(system alarms)
   (3)系统启动时间(system uptime)
   (4)路由引擎(chassis routing-engine)
   (5)集群状态(chassis cluster status)
   (6)板卡状态(chassis fpc pic-status)
   (7)电源状态(chassis environment pem)
   (8)60sCPU利用率(security monitoring performance spu)
   (9)CPU利用率、内存利用率、Flow session占用率(security monitoring)
    S12518:
   (1)CPU利用率(cpu-usage)
   (2)内存利用率(memory)
   (3)启动时间(version)
   (4)板卡状态(device)
   (5)温度(environment)
   (6)告警信息(alarm)
   (7)风扇状态(fan)
   (8)同步情况(ntp-service status)
   (9)IRF链路状态(irf link)
    F5-2400:
   (1)连接情况(sys performance connection)
   (2)系统情况(sys performance system)
   (3)吞吐量情况(sys performance throughput)

      SecureCRT的脚本编写用VBScript和Python的比较多,因此笔者采用了VBScript。如果只是简单的脚本,不用编写,直接录制下次也可以使用。 
     注意:在使用SecureCRT连接F5时,可能会出现public-key authentication with server 失败的情况,使用quick connect也会有此情况。此时虽然点击skip可以继续,但是终究无法全自动运行。经查阅多方面资料,是由于public key鉴权失败导致,只要在session的Authentication选项里去掉 publickey即可,为了一劳永逸,需要在option——>global option——>Default Session——>Edit Default Setting中的ssh2设置中,Authentication选项里去掉publickey即可。

2.详细代码  

#$language = "VBScript"
#$interface = "1.0"

crt.Screen.Synchronous = True

' This automatically generated script may need to be
' edited in order to work correctly.

Sub Main
	Set fso = CreateObject("Scripting.FileSystemObject")
	'存放设备信息的文件路径
	Set file = fso.OpenTextFile("E:\AutoInspect\equipmentInfo.txt")
	'窗口最大化
	crt.Window.Show 3
	Do Until file.AtEndOfStream 
		line = file.ReadLine
		commendAndLog line
	Loop
	'退出SecureCRT
	crt.Quit()

End Sub

Sub commendAndLog(line)
	equipmentInfo = Split(line)
	ip = equipmentInfo(0)
	uname = equipmentInfo(1)
	pwd = equipmentInfo(2)
	equip_type = equipmentInfo(3)
	Call crt.Session.Log(False)
	'登录设备
	crt.session.ConnectInTab "/SSH2 /L "&uname&" /PASSWORD "&pwd&" "&ip
	'以IP为文件名记录log
	crt.Session.LogFileName = "E:\AutoInspect\Logs\%H.txt"
	Call crt.Session.Log(True)
	crt.Screen.Synchronous = True
	select case equip_type
		case "FW"
			call Juniper_SRX3600Commend
			crt.screen.WaitForString ">"
		case "SW"
			call H3C_12518
			crt.screen.WaitForString ">"
		case "F5"
			call F5_2400
			crt.screen.WaitForString "#"
		case Else
			msgbox "Data Error"
	end select
	'crt.screen.WaitForString ">"
	Call crt.Session.Log(False)
	crt.session.disconnect
End Sub

Sub Juniper_SRX3600Commend()
	crt.screen.WaitForString ">"
	crt.Screen.Send "show chassis alarms | no-more" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "show system alarms | no-more" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "show system uptime | no-more" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "show chassis routing-engine | no-more" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "show chassis cluster status | no-more" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "show chassis fpc pic-status | no-more" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "show chassis environment pem | no-more" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "show security monitoring performance spu | no-more" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "show security monitoring | no-more" & chr(13)
End Sub

Sub H3C_12518()
	crt.screen.WaitForString ">"
	crt.Screen.Send "screen-length disable" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "display cpu-usage" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "display memory" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "display version" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "display device" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "display environment" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "display alarm" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "display fan" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "display ntp-service status" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send "display irf link" & chr(13)
	crt.screen.WaitForString ">"
	crt.Screen.Send chr(13)
End Sub

Sub F5_2400()
	crt.screen.WaitForString "#"
	crt.Screen.Send "tmsh" & chr(13)
	crt.screen.WaitForString "#"
	crt.Screen.Send "show sys performance connection" & chr(13)
	crt.screen.WaitForString "#"
	crt.Screen.Send "show sys performance system" & chr(13)
	crt.screen.WaitForString "#"
	crt.Screen.Send "show sys performance throughput" & chr(13)
	crt.screen.WaitForString "#"
	crt.Screen.Send chr(13)
End Sub

       其中equipmentInfo文件格式如下,为IP 用户名 密码 设备类型,各字段之间以空格分隔。设定好设备信息文件路径和log文件路径之后,运行脚本,就可以得到各个设备巡检结果的log了。

    全部代码可参考我的GitHub:https://github.com/virtualzzf/AutoInspect

### 编写使用 SecureCRT 自动化脚本 #### 脚本编写环境设置 为了在 SecureCRT 中创建自动化脚本,需先确保已安装 Python 或 VBScript 解释器。SecureCRT 支持多种编程语言用于脚本开发,其中最常用的是 Python VBS[^1]。 #### 创建新脚本文件 启动 SecureCRT 后,在菜单栏选择 `File` -> `New Script...` 来新建一个脚本文档。此时可以选择所使用的脚本语言并保存该文件至合适位置以便后续调用[^2]。 #### 录制基础脚本 对于初学者来说,可以通过录制功能快速获取基本框架。进入 `Session Options` 的 `Terminal` 页面开启宏记录选项后执行一系列操作;结束后关闭此选项即完成了一次简单的动作捕捉过程。这样做的好处是可以直观了解每一步对应的命令语句。 #### 修改完善脚本逻辑 基于上述获得的基础模板进一步调整优化以满足特定需求。比如自动输入用户名密码实现免密登录、批量下发配置指令等复杂场景下的应用扩展。下面给出一段Python版本的简单示例代码来展示如何连接远程服务器: ```python import securecrt_api as crt def main(): session = crt.Session() hostname = "example.com" username = "admin" password = "password" try: # 尝试建立会话连接 session.Connect("/SSH2 /L {} {}".format(username, hostname)) # 等待提示符出现后再发送密码 if not session.WaitForString("Password:", timeout=5): raise Exception("Failed to receive password prompt.") session.Send(password + "\n") # 执行其他命令... finally: # 断开当前会话 session.Disconnect() main() ``` 这段代码展示了怎样利用 SecureCRT 提供的功能库来进行 SSH 连接以及交互处理。 #### 测试运行效果 编辑完成后可通过点击工具栏上的播放按钮立即测试编写的脚本是否能够正常工作。如果遇到错误则返回上一步继续调试直至成功为止[^3]。 #### 应用部署分享 当确认无误之后还可以考虑将成品打包成可分发的形式给团队成员或者其他使用者提供便利。此外也可以上传到官方论坛交流心得经验共同进步成长。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值