温馨提示×

SecureCRT如何实现自动化任务

小樊
39
2025-12-04 05:12:27
栏目: 编程语言

实现思路总览

  • 使用内置的**登录动作(Logon Actions)**自动输入用户名和密码,适合固定提示符的登录流程。
  • 借助脚本自动化(支持 VBScript/Python)处理复杂交互、条件判断、批量执行与结果采集。
  • 通过会话模板 + 批量会话实现多台设备的统一配置与巡检。
  • 结合宏录制与快捷键,快速回放重复命令序列。
  • 需要跨设备编排或集中管控时,可用外部自动化工具(如 Paramiko 编写的脚本)与 SecureCRT 配合使用。

内置登录动作自动登录

  • 在会话属性中启用登录动作,为关键提示(如 “Username:”“Password:”)配置对应的发送字符串,连接时即可自动完成登录。
  • 适合提示符稳定、交互简单的设备;如需处理动态口令或二次认证,建议改用脚本方式。
  • 操作路径示例:右键会话 → 属性 → 登录动作 → 勾选“自动登录”,为 loginpassword 分别设置预期字符串与发送内容。

脚本自动化 VBScript 与 Python

  • 运行脚本:SecureCRT 菜单 Script → Run Script,选择 .vbs.py 文件执行。
  • 常用 API:
    • crt.Screen.Send(“cmd\r\n”) 发送命令;
    • crt.Screen.WaitForString(“prompt”, timeout) 等待单个关键字;
    • crt.Screen.WaitForStrings(“p1”,“p2”, timeout) 多关键字匹配并返回索引;
    • crt.Screen.ReadString(“prompt”) 读取到指定提示符的内容;
    • crt.Connect(“ssh2 user@host”) / crt.Disconnect() 建立/断开连接;
    • crt.Dialog.Prompt/MessageBox/InputBox 做交互输入与提示。
  • 示例(Python,连接后执行命令并等待提示符):
    # $language = "Python"
    # $interface = "1.0"
    
    def main():
        crt.Screen.Synchronous = True
        crt.Connect("ssh2 admin@192.0.2.10")
        crt.Screen.Send("show version\r\n")
        crt.Screen.WaitForString(">")
        output = crt.Screen.ReadString(">")
        print(output)
        crt.Disconnect()
    
    main()
    
  • 示例(VBScript,按提示自动登录并进入特权模式):
    #$language = "VBScript"
    #$interface = "1.0"
    
    crt.Screen.Synchronous = True
    crt.Screen.WaitForString "Username:"
    crt.Screen.Send "admin" & vbCrLf
    crt.Screen.WaitForString "Password:"
    crt.Screen.Send "P@ssw0rd" & vbCrLf
    crt.Screen.WaitForString ">"
    crt.Screen.Send "enable" & vbCrLf
    crt.Screen.WaitForString "Password:"
    crt.Screen.Send "En@ble0" & vbCrLf
    crt.Screen.WaitForString "#"
    crt.Screen.Send "show running-config | include hostname" & vbCrLf
    crt.Screen.WaitForString "#"
    
  • 批量执行:将命令放入文本文件(如 cmds.txt,支持以 # 开头为注释),脚本逐行读取并在设备提示符间校验执行结果,便于大规模配置与巡检。

批量与无人值守执行

  • 批量会话:将已配置好的会话(Session)文件复制到会话目录(如 %AppData%\Roaming\VanDyke\Config\Sessions),批量修改参数后一键连接,实现多台设备的统一操作。
  • 登录动作 + 启动命令:在会话属性的登录动作完成认证后,利用“启动时发送字符串”自动执行初始化命令或脚本,适合无人值守的初始化与巡检。
  • 宏录制与快捷键:通过“开始录制脚本”生成基础脚本,再按需编辑;为高频命令配置快捷键,提高日常效率。

实践建议与排错要点

  • 交互稳定性:优先使用精确提示符多关键字匹配(如 WaitForStrings)判断命令结束,避免因输出延迟导致错判。
  • 同步模式:在脚本开头设置 crt.Screen.Synchronous = True,减少输出与发送节奏不一致带来的丢字符或错位。
  • 日志与审计:开启会话日志,将脚本执行过程与输出落盘,便于回溯与审计。
  • 安全性:避免在脚本中硬编码密码,优先使用会话的登录动作或凭据管理;涉及生产变更时先在测试环境验证。
  • 语言与版本:不同版本的 SecureCRT 对脚本支持存在差异,部分环境以 Python 2 为主,编写与运行前确认版本与依赖。

0