Debian SecureCRT脚本编写入门
导读:入门概览 SecureCRT 提供脚本自动化能力,常用语言包括 VBScript、Python、JScript/Perl,可完成登录、批量执行、日志采集等任务。 在 Linux/Debian 环境中,脚本同样可用;若更偏好原生 SSH 自...
入门概览
- SecureCRT 提供脚本自动化能力,常用语言包括 VBScript、Python、JScript/Perl,可完成登录、批量执行、日志采集等任务。
- 在 Linux/Debian 环境中,脚本同样可用;若更偏好原生 SSH 自动化,也可在外部用 Python + Paramiko 实现,不依赖 GUI。
- 建议先明确你的使用场景:是“在 SecureCRT 内自动化交互”,还是“脱离 GUI 的批量 SSH 执行”。
环境准备与脚本执行
- 脚本录制与回放:在 SecureCRT 中先“开始录制”,完成一次手工操作后“停止并保存”,即可回放脚本,适合快速生成批量配置脚本雏形。
- 在会话中直接运行脚本:打开目标会话,菜单 Script → Run,选择脚本文件即可执行;也可在脚本里用 ConnectInTab 打开新标签页并自动登录。
- 交互窗口:菜单 View → Interact 可打开交互窗口,便于边写边试脚本片段(适合调试)。
- 外部执行思路:若不使用 SecureCRT 的脚本引擎,可在 Debian 上用 Python + Paramiko 编写纯 SSH 客户端脚本,便于集成 CI/CD 或调度系统。
Python 入门脚本模板
- 说明:以下模板演示“连接设备 → 等待提示符 → 执行命令 → 保存日志 → 处理分页”的完整流程。请将提示符(如 #、**> `)与命令按你的设备类型调整。
- 关键点:
- 使用 crt.Screen.WaitForString / WaitForStrings 同步等待关键字,避免“命令未回显就继续”的竞态。
- 处理 ---- More ---- 分页时,匹配到“More”就自动发送空格继续。
- 通过 crt.Session.LogFileName / Log(True) 开启按会话的日志,便于审计与回溯。
# $language = "Python"
# $interface = "1.0"
import time
def log_name():
return time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime())
def main():
# 基本配置
user = 'admin'
passwd = 'your_password'
host = '192.0.2.10'
prompt = '#' # 设备命令提示符,按需改为 '>
' 等
# 连接参数(示例为 SSH2)
# 注意:SecureCRT 的 ConnectInTab 参数语法依版本而异,以下为常见形式
connect_cmd = f"/SSH2 /L {
user}
/PASSWORD {
passwd}
{
host}
"
tab = crt.Session.ConnectInTab(connect_cmd)
time.sleep(1)
# 等待登录完成(出现提示符)
tab.Screen.WaitForString(prompt)
# 开启日志
ts = log_name()
tab.Session.LogFileName = f"{
ts}
_{
host}
.log"
tab.Session.Log(True)
# 执行命令
commands = [
"show version",
"show ip interface brief"
]
for cmd in commands:
tab.Screen.Send(cmd + "\r")
# 等待命令回显完成:匹配提示符或分页提示
idx = tab.Screen.WaitForStrings([prompt, "---- More ----"], 10)
while idx == 2: # 遇到分页
tab.Screen.Send(" ") # 继续翻页
idx = tab.Screen.WaitForStrings([prompt, "---- More ----"], 5)
# 结束
tab.Session.Log(False)
crt.Dialog.MessageBox("Done.")
main()
- 常见对象与用途(便于扩展脚本):
- crt.Screen:发送/接收、等待字符串、读取屏幕缓冲。
- crt.Session:连接/断开、日志控制、会话属性。
- crt.Dialog:弹窗输入/提示(如 InputBox/MessageBox)。
- crt.Arguments:获取脚本启动参数(便于参数化主机、账号等)。
VBScript 入门脚本模板
- 说明:VBScript 在 SecureCRT 中同样常用,语法直观,适合快速编写登录与批量命令脚本。
- 关键点:使用 WaitForString 等待登录提示,用 Send 发送用户名/密码与命令;处理分页时匹配 “---- More ----” 并自动发送空格继续。
# $language = "VBScript"
# $interface = "1.0"
Sub Main
Dim user, passwd, host, prompt
user = "admin"
passwd = "your_password"
host = "192.0.2.10"
prompt = "#" ' 设备命令提示符,按需改为 '>
'
' 连接
crt.Session.Connect "/SSH2 /L " &
user &
" /PASSWORD " &
passwd &
" " &
host
crt.Screen.WaitForString "ogin:"
' 登录
crt.Screen.Send "admin" &
vbCrLf
crt.Screen.WaitForString "assword:"
crt.Screen.Send passwd &
vbCrLf
crt.Screen.WaitForString prompt
' 日志
crt.Session.LogFileName = "c:\temp\" &
host &
"_" &
Replace(Now, "/", "-") &
".log"
crt.Session.Log True
' 命令
crt.Screen.Send "show version" &
vbCrLf
crt.Screen.WaitForString prompt
crt.Screen.Send "show ip interface brief" &
vbCrLf
crt.Screen.WaitForString prompt
' 分页处理
Do
Dim idx
idx = crt.Screen.WaitForStrings(Array(prompt, "---- More ----"), 5)
If idx = 2 Then
crt.Screen.Send " "
Else
Exit Do
End If
Loop
crt.Session.Log False
MsgBox "Done."
End Sub
- 常用 API 提示:
- crt.Screen.WaitForString(“str”, timeout) 与 crt.Screen.WaitForStrings(Array, timeout) 用于同步等待;后者返回匹配到的索引(从 1 开始),超时返回 0。
调试与最佳实践
- 同步与等待:将 crt.Screen.Synchronous 设为 True 可减少输出错位;配合 WaitForString/WaitForStrings 明确“下一步何时继续”。
- 日志与审计:在关键会话上启用 Session.Log,并按时间/主机命名日志文件,便于回溯与对比。
- 参数化与文件驱动:从 CSV/IP 列表 读取主机与账号,循环处理多台设备,降低维护成本。
- 安全建议:避免在脚本中硬编码密码;优先使用 SSH 密钥、会话配置或凭据管理器;必要时对日志做脱敏处理。
- 分页与慢设备:遇到 ---- More ---- 或设备回显慢时,适当延长超时或加入重试逻辑,确保命令完整执行。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian SecureCRT脚本编写入门
本文地址: https://pptw.com/jishu/757776.html
