资讯动态

SecureCRT 9.1.0实战:会话库、批量脚本与巡检自动化

发布时间:2026/10/24 6:04:07 来源:尧图企业网站定制
简介SecureCRT 9.1.0 Build 2579Windows X64官方原版安装包面向需要从Windows远程登录UNIX/Linux服务器的运维工程师、后端开发者和网络实验教学人员。它支持SSH1、SSH2、Telnet、Telnet/TLS、RLogin、Serial、TAPI和Raw等协议可覆盖日常SSH连接、串口调试与多会话管理场景对习惯Putty、XShell、MobaXterm的用户而言也可作为稳定、成熟的终端仿真替代方案。资源包共3个文件以exe安装程序、html安装前说明和zip压缩包为主整体约29.94MB其中安装程序用于部署客户端说明页汇总安装前需确认的事项压缩包补充解压密码提示便于先阅读注意事项再完成部署。目前已有7526人学习下载具备一定参考热度。读者可获得9.1.0官方原版安装程序、安装前检查指引及密码提示用于搭建Windows端Linux远程连接环境并借助多协议支持应对服务器维护、设备调试和实验教学等任务。1. 机房割接夜真正决定效率的不是手速SecureCRT 9.1.0 这个版本号在运维圈里出现频率很高多数人对它的印象停留在「一个能开很多标签页的 SSH 客户端」。这个印象不算错但漏掉了它真正值钱的部分会话是纯文本配置、终端行为可以脚本化、连接过程可以留痕。一次涉及几十台设备的配置变更靠手速一台台敲出错只是时间问题靠会话库加脚本跑批同一套动作重复第二遍时几乎零成本。下面这套内容面向的是手里管着几十上百台网络设备或 Linux 主机、需要把重复登录和重复采集压下去的人也面向刚接触 SecureCRT 9.1.0、想知道它的配置到底存在哪、能不能批量改的新手。Windows X64 环境下从装到用、从单会话到批量脚本按顺序往下走就行。2. 协议选型与会话目录SecureCRT 9.1.0 的配置到底存在哪很多人用了几年都没打开过会话文件以为配置存在某个数据库里。实际上 SecureCRT 9.1.0 的每一个会话就是一个独立的 ini 文本文件放在用户配置目录下的 Sessions 子目录里。这个事实决定了很多事情会话可以批量生成、可以用 Git 管版本、可以整目录拷到另一台机器上直接用。搞清楚目录结构比记住任何一个快捷键都重要。2.1 SSH2、Telnet、串口三种接入怎么分派SecureCRT 支持的协议不少日常真正用到的就三种选错了会在后面付出代价。协议典型对象默认端口关键注意点SSH2Linux 主机、支持 SSH 的网络设备22老设备常只支持 sha1 系列算法9.x 默认已关闭Telnet隔离网段内的老设备、部分带外管理口23全程明文只适合完全隔离的管理网段Serial交换机 Console、设备首次上架COM 口波特率 9600 / 8 数据位 / 无校验 / 1 停止位选型原则很直接只要设备支持 SSH2就不要用 Telnet哪怕在内网。SSH2 除了加密还带来基于密钥的免密登录这是后面做自动化脚本的前提——脚本里不该出现明文口令。Serial 只用于设备还没配管理 IP 的阶段配完 IP 就该切到 SSH2别把 Console 线一直挂着当日常通道用。还有一点容易被忽略同一个设备可以同时存在多个会话配置比如一个走 SSH2 做日常运维一个走 Serial 做应急恢复。给它们起不同的会话名即可前缀区分开比如SW-CORE-01-ssh、SW-CORE-01-con。2.2 会话文件是 ini摸清目录结构才好备份和批改SecureCRT 9.1.0 在 Windows 上的用户配置目录典型路径形如%APPDATA%\厂商标识\Config\。这个目录下有两类东西需要区分Sessions\子目录存放所有会话每个会话一个.ini可以再建子文件夹做分组文件夹层级就是会话管理器里看到的树。配置目录根下的全局配置文件终端回滚行数、字体、默认日志路径这类全局设置。会话 ini 的格式不是标准 ini它用前缀标记数据类型这个设计第一次见会有点懵S:Hostname192.0.2.11 S:Protocol NameSSH2 S:Usernameops D:[SSH2] Port00000016 B:Compress Data00000001S:后面跟字符串D:后面跟的是 8 位十六进制数值B:是布尔值00000001为真。上面这个00000016就是十进制 22——端口被存成了十六进制。这是手工改会话文件时最常见的翻车点写22进去SecureCRT 会当成十六进制的 0x22 即 34 去连然后连接超时你在那儿怀疑网络其实是一个数字进制的问题。知道这一点之后能做三件事整目录打包做冷备份把会话目录纳入版本管理谁改了哪个会话一目了然用脚本按设备清单批量生成会话文件。第三件事放到第 4 章展开这里先把目录记牢。提示配置目录不要直接放在网盘同步目录或共享盘里。多台机器同时写同一份会话文件会互相覆盖且不会有任何报错提示。3. Windows X64 上装好第一件事校验、静默安装与全局选项安装本身没什么难度难的是装完之后的一堆默认值。SecureCRT 9.1.0 的出厂默认配置偏保守回滚缓冲只有几百行日志默认不开字符编码不一定是设备那边的编码。这些东西在单次调试时无所谓一旦进入批量运维每一个默认值都会变成一次事故。所以装完先别急着连设备花十分钟把这些值调对后面能省掉很多返工。3.1 安装包校验与静默安装命令拿到 Windows X64 的安装包第一步不是双击是校验。尤其在企业环境里安装包经过多手转发哈希对不上就说明文件在传输中出过问题装上去可能缺组件或直接崩溃。# 计算安装包 SHA256与发布方公布的摘要逐位比对 Get-FileHash -Algorithm SHA256 -Path D:\pkg\scrt-x64-setup.exe | Format-List比对通过再装。单机安装直接 GUI 走完即可需要批量部署到多台运维机时才用静默参数。不同打包器的参数不一样常见做法是两种都试一遍看退出码# InstallShield 风格 Start-Process -FilePath D:\pkg\scrt-x64-setup.exe -ArgumentList /s,/v/qn -Wait -PassThru # 若无提示静默安装成功再试 NSIS 风格 Start-Process -FilePath D:\pkg\scrt-x64-setup.exe -ArgumentList /S -Wait -PassThru-Wait让 PowerShell 等安装进程退出再执行下一条-PassThru把进程对象返回出来方便读退出码。退出码为 0 表示成功3010 表示需要重启。静默安装失败的典型原因是缺少管理员权限或者安装路径参数被/v后面的引号吃掉——参数里带空格的路径要整段用双引号包住再转义。安装完成后授权走正规渠道企业采购会拿到授权文件首次启动时选择导入授权数据把文件指过去即可。评估期用于功能验证完全够用验证完再决定是否采购。授权文件不要放在会同步的目录里理由和第 2 章说的一样。3.2 全局选项里必须先改的 4 个值打开Options → Global Options下面四项是我每次装完必改的按重要性排序位置默认行为建议值不改的后果Terminal → Emulation回滚缓冲几百行至少 10000 行抓包调试时开到 30000排查日志被冲掉只剩最后一屏Terminal → Appearance编码随会话统一为 UTF-8老设备单独设 GBK中文提示符变问号看不清报错Log File不自动记录开自动记录路径带主机名与日期事后追查没有原始记录Session → 默认会话属性继承出厂设置基于一个调好的模板会话复制每建一个新会话都要重调一遍回滚行数这一项作用是让终端保留更多历史输出。跑show running-config看几百行配置缓冲不够就只能看到尾巴前面全丢了只能重跑一次命令。这个坑我踩过不止一次现在一律先调到 30000 再干活。日志路径建议用带占位符的模板常见写法是D:\ops\log\%S\%Y-%M-%D.log其中%S会被替换成会话名%Y、%M、%D是日期。这样每台设备每天一个文件出问题按设备名和日期就能定位到原始输出不用去翻回忆。3.3 配置目录备份与换机迁移配置调好之后把整个配置目录压缩一份放到离线位置这是换机器时最省事的做法。新机器装完 SecureCRT 9.1.0 后先完全退出程序再把备份的Config目录覆盖回去注意是覆盖不是合并——合并会把两边的会话混在一起同名会话还可能出现一份新的、一份旧的。迁移时还有两个细节一是目标机器的用户名如果和源机器不同配置目录路径会变需要按新路径放二是如果源机器上装过额外的脚本或自定义菜单脚本文件本身不在配置目录里要单独拷。脚本路径通常在会话或全局配置里以绝对路径引用换机器后路径变了就会报找不到文件这个后面第 5 章会细说。4. 会话库与脚本自动化把 50 台设备的重复登录压成一次点击到这一步单台设备的连接已经很顺手了。真正拉开差距的是两件事会话库的组织方式以及能不能让程序替你完成「登录、敲命令、存结果」这一整串动作。前者决定你找设备快不快后者决定你一个人能覆盖多少台设备。4.1 会话树命名规范与文件夹分组会话管理器的树形结构是可以随便建文件夹的但随便建的结果就是半年后自己也找不到。我一般按「环境 → 角色」两级分组会话名统一为角色-序号-用途IDC-A/ core/ SW-CORE-01-ssh.ini SW-CORE-02-ssh.ini access/ SW-ACC-01-ssh.ini serial/ SW-CORE-01-con.ini好处有三个一是按文件夹可以整组打开一次连一组设备二是会话名在日志路径里当占位符用名字规范日志文件就整齐三是批量生成会话时目录结构直接由脚本按分组建出来不用手工一个个点。命名里避免用空格和中文虽然支持但在脚本拼接路径时容易出转义问题。设备主机名本身就是最好的标识直接用。4.2 用 Python 批量生成 SecureCRT 会话文件新上一批设备时手工建 50 个会话是纯粹浪费生命。既然会话是 ini 文件直接用清单生成就行。# gen_sessions.py —— 按设备清单批量生成 SecureCRT 会话文件 import os from pathlib import Path # 配置根目录厂商标识目录名以本机实际为准 CONFIG_ROOT Path(os.environ[APPDATA]) / 厂商标识 / Config / Sessions GROUP IDC-A/core # (会话名, 主机地址, 登录用户, 端口) DEVICES [ (SW-CORE-01-ssh, 192.0.2.11, ops, 22), (SW-CORE-02-ssh, 192.0.2.12, ops, 22), (SW-CORE-03-ssh, 192.0.2.13, ops, 2222), ] TEMPLATE S:Hostname{host} S:Protocol NameSSH2 S:Username{user} D:[SSH2] Port{port_hex} B:Compress Data00000001 for name, host, user, port in DEVICES: target CONFIG_ROOT / GROUP / f{name}.ini target.parent.mkdir(parentsTrue, exist_okTrue) # 端口必须写成 8 位十六进制写十进制会连错端口 content TEMPLATE.format(hosthost, useruser, port_hexf{port:08X}) target.write_text(content, encodingutf-8) print(fwritten: {target})逻辑说明脚本先拼出会话目录的绝对路径遍历设备清单把每个设备的参数填进模板字符串写到对应分组目录下。mkdir(parentsTrue, exist_okTrue)保证多级目录可以一次建出来已存在也不报错。参数说明CONFIG_ROOT里的厂商标识目录名要按本机实际路径填可以先在资源管理器里打开配置目录确认一次GROUP就是会话树里的文件夹层级用斜杠拼接port_hexf{port:08X}是这段脚本的核心把十进制端口格式化成 8 位大写十六进制22变成00000016。如果设备用的是非标准端口比如上面第三个设备的 2222这一步同样成立。跑完之后不用重启 SecureCRT会话管理器里刷新一下就能看到新会话。这里有个必须注意的点如果 SecureCRT 正开着并且你在里面改过会话程序退出时可能会把内存里的状态写回去覆盖掉脚本生成的文件。稳妥做法是先完全关闭 SecureCRT再跑生成脚本最后打开。4.3 用 crt 脚本接口做登录后自动采集会话批量生成解决的是「连得上」脚本解决的是「连上之后干什么」。SecureCRT 内置了脚本接口脚本运行时能直接拿到一个全局对象用它控制屏幕读写、发送命令、等待提示符。# collect_cfg.py —— 在 SecureCRT 中通过 Script 菜单运行 import os LOG_DIR rD:\ops\log\cfg os.makedirs(LOG_DIR, exist_okTrue) host crt.Session.RemoteHost # 当前会话的主机地址 crt.Screen.Synchronous True # 同步模式发命令必须开 crt.Screen.WaitForString(#, 15) # 等特权提示符出现超时 15 秒 crt.Screen.Send(terminal length 0\r) # 关闭分页避免输出被暂停 crt.Screen.WaitForString(#, 15) crt.Screen.Send(show running-config\r) output crt.Screen.ReadString(#, 120) # 读到下一个提示符为止 path os.path.join(LOG_DIR, f{host}.cfg) with open(path, w, encodingutf-8, errorsreplace) as f: f.write(output) crt.Dialog.MessageBox(fsaved: {path})逻辑说明脚本假设当前会话已经登录并且处于特权模式提示符为#。先关闭分页否则设备会输出--More--把屏幕卡住ReadString会一直等到超时。然后发采集命令读到下一个提示符把中间的内容整体写入文件。参数说明crt是运行环境注入的对象不需要 import用系统自带的 Python 解释器直接跑这个文件会报NameError: name crt is not defined——它只能在 SecureCRT 内部运行。Synchronous True必须开异步模式下Send之后立刻Read读到的往往是空字符串。两个超时值15 秒和 120 秒按设备响应速度调整跨网段访问慢的设备要放大配置量大的设备ReadString的超时要给到 180 秒以上。脚本跑起来的入口在Script → Run选中文件即可。想批量跑就配合多窗口平铺一次连上十台设备每个窗口各跑一次脚本采集结果按主机名分别落盘。这套组合拳的价值在于第二次做同样的事时成本接近于零。5. 避坑排查SecureCRT 9.1.0 上线后最常翻的 5 个车前面几步走通之后日常使用基本顺畅了。真正让人抓头发的往往是那些看起来毫无道理的失败昨天还能连的设备今天连不上了同一份配置换台机器就报错。下面五条是我在实机上反复遇到的按现象、原因、解决三段写清楚。5.1 连接与显示类的两个坑第一坑连老设备报密钥交换失败。现象连接某台运行多年的网络设备SecureCRT 弹窗提示没有匹配的密钥交换算法或主机密钥算法连接直接中断而同一台设备用别的老工具能连上。原因SecureCRT 9.1.0 默认关闭了一批基于 sha1 的旧算法这是安全策略收紧的正常结果。老设备固件只支持这些算法双方找不到共同语言。解决打开会话属性进Connection → SSH2在Key Exchange里勾选diffie-hellman-group14-sha1还不通就再加diffie-hellman-group1-sha1在Host Key Algorithms里勾上ssh-rsa。改完重连即可。这条配置只对单个会话生效别图省事改全局默认那等于给自己埋雷。设备固件能升级的优先升级固件。第二坑中文回显全是乱码。现象登录设备后回显的中文提示、告警信息显示为问号或方块英文正常。原因会话的字符编码和设备的输出编码不一致。设备侧多是 GBKSecureCRT 侧随会话默认两边对不上。解决会话属性Terminal → Appearance → Character encoding改成和设备一致的值。不确定就试先设 UTF-8 看是否正常不正常改 GBK两者必居其一。改完要断开重连才生效因为编码是在会话建立时协商的。另外字体建议选等宽字体中英文混排时列不会错位。5.2 配置与脚本类的三个坑第三坑会话配置莫名被覆盖。现象在一台机器上改过的会话设置过一段时间变回旧值或者分组顺序被打乱。原因配置目录被放进了网盘同步目录或共享盘多台机器各自打开 SecureCRT退出时都往同一个文件写。解决配置目录只放本地备份用「定期导出压缩包 离线保存」的方式绝不做双向同步。如果确实要在多台机器间保持一致就统一从一份主配置单向分发分发前先关闭目标机器上的程序。第四坑命令发送到所有会话导致误操作。现象本想只在一台设备上敲命令结果多台设备同时执行轻则多出几条无用配置重则触发重启类命令。原因开启了「发送到所有会话」功能且确认弹窗被习惯性回车确认。人在赶时间的时候弹窗只是手指的一次反射。解决按环境拆分成不同的窗口组生产设备单独开一个窗口永远不要在混编窗口里启用批量发送。更稳的做法是用脚本代替手工批量发送脚本里先校验提示符里的主机名不在白名单里就直接退出不给误操作留机会。第五坑脚本报 crt 未定义。现象脚本在编辑器里看着没问题运行就报NameError: name crt is not defined或者提示找不到解释器。原因用系统的 Python 直接执行了脚本文件。crt对象由 SecureCRT 运行时注入脱离这个宿主环境就不存在。解决一律通过程序内的脚本菜单运行。如果提示解释器相关错误先确认本机 Python 已安装且位数与 SecureCRT 一致都是 64 位再确认路径能被正确找到。脚本里如果引用了外部文件用绝对路径相对路径的基准目录在不同版本上可能不一样。6. 进阶把每日巡检做成一个按钮会话库和脚本都有了之后剩下的优化空间在「入口」上。每天重复的操作不该每次都走「打开会话 → 登录 → 找脚本 → 运行」这四步。SecureCRT 的按钮栏可以把这一步压成一次点击View → Button Bar打开按钮栏右键配置每个按钮可以绑定一个脚本文件和一组参数。我常配的三个按钮长这样按钮名绑定动作用途采配置运行采集脚本输出到按主机名命名的文件变更前后各点一次留对比基线查接口运行脚本依次发show interface status等三条命令快速判断端口状态存会话运行脚本把当前会话的窗口内容整体导出现场排障时留证据按钮绑定的脚本可以带参数常见做法是在脚本开头用对话框收一次输入把设备角色或命令名传进去避免为每条命令单独写一个脚本文件。这样按钮数量可控维护成本也低。命令行入口同样值得记住给程序的可执行文件加参数可以直接带着协议和地址启动一个新会话省掉在会话管理器里找的那一步。把它写进快捷方式或批处理配合固定的用户名字段日常连接就是双击一次的事。验证这套东西有没有真正生效方法很朴素随便挑一台设备从点击按钮到文件落盘掐一次时间隔一天再做一次对比两次输出的文件是否一致。如果第二次比第一次慢或者结果不同说明脚本里有依赖人工确认的环节没清理干净比如中途弹了个对话框等你点确定——这种半自动的东西用久了比全手工还容易出错因为你会习惯性相信它已经跑完了。我自己最早的教训是脚本里没加提示符等待直接Send完就Read采集到的配置文件全是空的而文件确实生成了大小也是 0 字节。当时看着一屏「采集完成」的提示还挺得意直到真出事要翻配置才发现手里一堆空文件。从那以后凡是自动化脚本我都会先在一个会话上手动跑一遍把输出打印出来看一眼内容再铺开到全部设备。多花的那两分钟比事后重跑五十台设备便宜太多。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑