SecureCRT批量执行命令及脚本交互步骤

作者:技术拾光

时间:2026-05-30

浏览:491

SecureCRT批量执行命令有两种方式:ChatWindow广播命令至所有已连接会话,零配置但无历史记录、不校验执行结果,适合瞬时巡检;Python脚本可录制或直接编写,支持等待提示符和错误处理,能随会话自动运行,需确保各设备提示符一致。

文章目录

当你需要在10台Linux服务器上同步执行df -h和uptime巡检命令,又不想逐个切换标签页敲一遍时,SecureCRT提供了两条很实用的批量执行路径——一条是零配置的即时广播,另一条是可复用、带错误处理的Python脚本,而且都不需要额外安装依赖。先看第一种最简单的方式。

SecureCRT批量执行命令及脚本交互步骤

用Chat Window一键广播命令,快速完成Linux批量巡检

打开SecureCRT,顶部菜单View → 勾选Chat Window,终端下方立即出现一个灰色输入框。在Chat Window区域右键,选择Send Chat to All Sessions。这里有个关键前提:所有目标会话必须已经连接且处于激活状态(标签页呈高亮色)。搞定之后,在Chat Window中输入df -h并回车,命令会同时发送至所有已连接会话,每台终端实时返回结果。

不过要注意,这种方式不保存历史记录,也不校验命令是否执行成功。它只适合那种无交互、低风险的瞬时巡检场景。假如某台设备断连了,或者卡在密码提示符,命令就会静默失败,连个报错提示都没有。所以,简单归简单,局限性也明显。

用Python脚本自动登录+批量执行,实现SecureCRT自动化巡检

如果你需要更可靠、可重复的方案,那就得请出Python脚本了。这里提供两种构建思路。

方法一:录制后编辑成可靠脚本

先手动连一台典型服务器,执行hostname→df -h→exit,全程用Script → Start Recording把操作录下来。停止录制后保存为audit.py。接着用文本编辑器打开,把硬编码的IP、密码替换成变量,再插入crt.Screen.WaitForString("$ ", 15)等待提示符——这一步很关键,能避免命令堆积发送导致执行顺序混乱。

方法二:直接编写最小可用脚本

如果你习惯手写,可以直接上这个模板:

# $language = "Python3"
# $interface = "1.0"
import time
def main():
    tab = crt.GetScriptTab()
    tab.Screen.Synchronous = True
    tab.Screen.Send("hostname\r\n")
    tab.Screen.WaitForString("$ ", 10)
    tab.Screen.Send("df -h\r\n")
    tab.Screen.WaitForString("$ ", 10)
main()

这里有个容易踩的坑:必须将脚本首行$language设为"Python3",否则SecureCRT会调用内置的Python 2.7,导致f-string这类语法直接报错。

让脚本随会话自动运行,批量启动Linux服务器巡检

脚本写好之后,如果能让它随会话自动触发,那才叫真正的解放双手。操作步骤也不复杂:

第一步:配置单个会话的Logon Actions

在SecureCRT中打开一个已保存的会话(比如“web-server-01”)→ 右键 → Properties → Logon Actions。

第二步:勾选脚本并指定文件

勾选“Logon script”,点击Browse选择你写好的audit.py文件 → 点击OK保存会话配置。

第三步:重新连接验证自动执行

双击该会话图标重新连接 → 脚本自动触发,完成登录→等待提示符→发送命令→等待→退出全流程。

第四步:批量应用至其他会话

对其他会话重复第一步和第二步。全部配置完成后,可以批量启动这些会话:在会话管理器中按住Ctrl多选,右键选择Connect。这样每台设备会独立运行脚本,互不干扰。

需要提醒的是,这个方案要求每台设备登录后的提示符一致(比如都是$ )。如果混用了root用户(提示符为# ),就得在脚本里增加分支判断,否则WaitForString("$ ")会一直等下去直到超时。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章