SecureCRT 在 Linux 上的脚本编写技巧
一 脚本语言与运行机制
- 内置脚本引擎支持 VBScript、Python、Perl,通过脚本菜单直接运行或绑定到会话事件,适合做登录自动化、批量巡检、交互式命令执行等。
- 常用对象模型包含:crt.Screen、crt.Session、crt.Dialog、crt.Clipboard、crt.FileTransfer、crt.Tab、crt.Application、crt.Arguments、crt.Window、crt.SessionConfiguration,其中屏幕交互以 crt.Screen 为核心,会话管理以 crt.Session 为核心。
- 快速入门步骤:
- 在脚本编辑器中新建脚本,首行声明语言与接口,例如 Python 使用:# $language = “python” 与 # $interface = “1.0”。
- 运行方式:菜单 Script → Run;或在会话中右键执行;也可在全局启动脚本中配置自动执行。
二 高效交互与同步控制
- 使用 crt.Screen.WaitForString(“prompt>”, timeout) 精确等待提示符;配合 crt.Screen.Send(“cmd” + chr(13)) 发送命令并回车,避免盲目 Sleep。
- 多分支等待用 crt.Screen.WaitForStrings([“yes/no”, “password:”, “#”, “>”], timeout),其返回值为匹配到的索引(从 1 开始),未匹配返回 0,据此分流处理交互。
- 处理分页输出(如设备显示 “---- More ----”)时,循环 WaitForStrings 检测分页标记,匹配后发送空格继续,直到出现期望的结束标记(如 > 或设备提示符)。
- 提升可靠性的要点:
- 启用/谨慎使用 crt.Screen.Synchronous(同步模式)以避免输出与脚本节奏不一致;必要时在关键段落前后临时切换同步状态。
- 为每次交互设置合理 timeout,并在超时后记录日志、重试或安全退出,避免脚本“假死”。
三 登录自动化与批量执行
- 会话级自动化:在会话属性的 “登录操作” 中启用 “自动化登录” 与 “启动时发送字符串”,可自动输入用户名、密码或初始命令,减少人工输入。
- 全局级自动化:在 “选项 → 全局选项 → 常规 → 自动会话” 配置 SecureCRT 启动时自动连接指定会话,实现无人值守启动与执行。
- 批量执行范式(Python 示例要点):
- 读取设备清单(如 CSV/IP 列表),逐台连接;连接后按设备提示符等待,进入后设置日志文件名并开启日志记录。
- 发送巡检/配置命令,处理分页与分支提示,逐条记录输出;异常时捕获并记录,继续下一台,保证整体任务的鲁棒性。
四 日志、传输与界面加速
- 结构化日志:为每次会话生成含时间戳的日志文件名(如 f"{current_time}_{ip}_log.txt"),在关键阶段前后开启/关闭日志,便于审计与回溯。
- 文件传输:利用 SecureCRT 内置的 Xmodem、Ymodem、Zmodem、Kermit、ASCII 等协议,在脚本中结合 crt.FileTransfer 对象实现批量上传/下载与断点续传。
- 界面与效率:通过 按钮栏 绑定常用命令、快捷键 快速发送片段,减少重复输入;配合 关键字高亮与正则 快速定位错误与关键输出。
五 调试与安全建议
- 调试技巧:在 Python 中使用 print 输出变量与执行流;在 VBScript 中使用 MsgBox/InputBox 进行断点与输入;必要时分段运行脚本定位问题。
- 安全实践:避免将 密码硬编码 在脚本中,优先使用 环境变量、配置文件(权限受限) 或 SecureCRT 的会话保存密码功能;对日志与传输文件设置合适的权限与留存策略。