介绍:CRT运行脚本,伴随file.xlsx文件,文件可以采用下面下载使用,自己进行修改。该脚本使用前提是已经登录在跳板机上,使用跳板机登录设备并执行相关命令。
使用场景:有大量交换机或者服务器的情况,最好是进行备份的操作,如果是执行命令,建议还是自己慢慢操作吧,别出问题。
[Visual Basic] 纯文本查看 复制代码 Dim objExcel, objWorkbook, objSheet1, objSheet2, objSheet3, objSheet4
Dim objShell, deviceAddress, deviceType, command
Dim i, j, deviceCount
' 创建 Excel 应用程序对象
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False ' 不显示 Excel 窗口
' 打开 Excel 文件
Set objWorkbook = objExcel.Workbooks.Open("F:\caiji\file.xlsx") ' 修改为实际路径,并且路径必须为英文
' 确保工作表名称正确
' 将sheet页重定义为objSheet
Set objSheet1 = objWorkbook.Sheets("Sheet1") ' 确保这里的名称是正确的
Set objSheet2 = objWorkbook.Sheets("Sheet2")
Set objSheet3 = objWorkbook.Sheets("Sheet3")
Set objSheet4 = objWorkbook.Sheets("Sheet4")
Set objSheet5 = objWorkbook.Sheets("Sheet5")
Set objSheet6 = objWorkbook.Sheets("Sheet6")
' 检查 Sheet1 是否存在数据
If objSheet1.UsedRange.Rows.Count < 2 Then
crt.Session.Send "ERROR" & vbCrLf
End If
' 获取设备数量
deviceCount = objSheet1.UsedRange.Rows.Count
' 遍历每个设备
For i = 2 To deviceCount ' 从第二行开始,假设第一行是标题
deviceName = objSheet1.Cells(i, 1).Value ' A列是设备名
deviceAddress = objSheet1.Cells(i, 2).Value ' B列是设备地址
deviceType = objSheet1.Cells(i, 3).Value ' C列是设备类型
' 在 CRT 中发送设备地址
crt.Screen.Send deviceAddress & vbCrLf
' 根据设备类型选择命令
Select Case deviceType
'设备类型是华为
Case "Huawei"
Set objCommands = objSheet2
'设备类型是华三
Case "H3C"
Set objCommands = objSheet3
'设备类型是锐捷
Case "RG"
Set objCommands = objSheet4
'设备类型是思科
Case "Cioco"
Set objCommands = objSheet5
'设备类型是华为,假设使用跳板机登录时需要选择用户
Case "Huawei1"
Set objCommands = objSheet6
Case Else
crt.Screen.Send vbCrLf
End Select
'初步定义LOG文件名,定义文件名为时间年月日时分秒
logfilename = (deviceName&".log")
crt.Session.LogFileName = logfilename
'开启LOG记录功能
crt.session.log true
' 执行命令
For j = 2 To objCommands.UsedRange.Rows.Count ' 从第二行开始
'等待进入设备
crt.Screen.WaitForStrings "#", ">"
'等待10秒延迟
crt.Screen.WaitForStrings 10
'发送一个回车符
crt.Screen.Send Chr(13)
crt.Screen.Synchronous = True
command = objCommands.Cells(j, 1).Value ' 假设命令在第一列
crt.Screen.Send command & vbCrLf
' 等待三种可能的提示符
If crt.Screen.WaitForStrings("#", ">", ")", 10) = 0 Then
crt.Screen.Send vbCrLf
Else
crt.Screen.Send vbCrLf
End If
Next
'等待跳板机提示已经退出设备
crt.Screen.WaitForStrings "Your Input is:"
crt.Screen.WaitForStrings 10
'关闭LOG记录功能
crt.session.log false
Next
' 关闭 Excel
objWorkbook.Close False
objExcel.Quit
' 清理对象
Set objSheet1 = Nothing
Set objSheet2 = Nothing
Set objSheet3 = Nothing
Set objSheet4 = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
文档下载:https://wweh.lanzouw.com/is2iY2fs84tc
|