SecureCRT支持使用VBScript、JScript和Python脚本来实现自动化操作。以下是使用脚本的完整方法:
创建脚本文件:
.vbs
文件.js
文件.py
文件运行脚本方法:
Alt+S
> "Run"SecureCRT.exe /SCRIPT path_to_script
VBScript连接示例:
# $language = "VBScript"
# $interface = "1.0"
Sub Main
crt.Session.Connect "/SSH2 /L username /PASSWORD password hostname"
crt.Screen.Send "ls -l" & vbCr
End Sub
Python脚本示例:
import os
from securecrt_tools import scripts
def Main():
script = scripts.Script()
script.start_crt_session()
script.send("ls -l\r")
script.disconnect()
' 连接会话
crt.Session.Connect "/SSH2 /L user /PWD pass 192.168.1.1"
' 断开连接
crt.Session.Disconnect
' 新建标签页
crt.Session.ConnectInTab "/SSH2 /L user host"
' 发送命令
crt.Screen.Send "show version" & vbCr
' 等待特定字符串
crt.Screen.WaitForString "login:"
crt.Screen.Send "username" & vbCr
' 获取屏幕内容
Dim result
result = crt.Screen.ReadString("#")
' 使用ZMODEM发送文件
crt.Screen.Send "rz" & vbCr
crt.FileTransfer.SendZmodem "C:\localfile.txt"
' 接收文件
crt.Screen.Send "sz remotefile.txt" & vbCr
crt.FileTransfer.ReceiveZmodem "C:\downloads\"
Function WaitForPrompt
Do
' 等待#、$、>或:等常见提示符
n = crt.Screen.WaitForStrings("#", "$", ">", ":", 10)
If n = 0 Then
WaitForPrompt = False
Exit Function
End If
Loop Until True
WaitForPrompt = True
End Function
Sub LogToFile(message)
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\logs\session.log", 8, True) ' 8=追加模式
file.WriteLine Now() & " - " & message
file.Close
End Sub
Sub ConnectMultipleHosts
hosts = Array("router1", "router2", "switch1")
For Each host In hosts
crt.Session.ConnectInTab "/SSH2 /L admin " & host
crt.Screen.WaitForString "#"
crt.Screen.Send "show run" & vbCr
crt.Session.Disconnect
Next
End Sub
使用MsgBox调试:
MsgBox "变量值为: " & variable
记录到SecureCRT日志:
crt.Dialog.MessageBox "错误信息"
Python脚本调试:
print()
函数输出到SecureCRT脚本窗口logging
模块官方脚本示例:
Scripts
文件夹常用脚本库:
脚本录制功能:
不要在脚本中硬编码密码,考虑使用:
敏感操作前添加确认提示:
If crt.Dialog.MessageBox("确定要执行此操作吗?", vbYesNo) = vbNo Then
Exit Sub
End If
通过以上方法,您可以充分利用SecureCRT的脚本功能实现自动化运维,提高工作效率。