SecureCRT 脚本自动化教程

VBScript·JScript·Python·自动登录·批量执行·设备巡检

SecureCRT vs PuTTY的核心壁垒:PuTTY完全没有脚本引擎,所有操作必须手动执行。SecureCRT内置脚本引擎支持VBScript、JScript、Python、PerlScript多种语言,可编写自动化脚本完成批量部署、配置备份、日志收集等运维任务——这是它作为商业软件的核心价值之一。

本教程基于 SecureCRT 的脚本引擎功能,介绍如何使用脚本实现自动化运维。VanDyke Software官网(vandyke.com)也提供了Python脚本示例供参考。下文将从基础到进阶,覆盖自动登录、批量配置、设备巡检等实用场景。

脚本引擎概述

SecureCRT 支持以下脚本语言,每种语言有各自的适用场景:

脚本语言文件扩展名适用场景学习难度
VBScript.vbsWindows环境、简单自动化、自动登录
JScript.jsWeb管理员习惯JS语法
Python.py复杂逻辑、数据处理、API调用
PerlScript.pl文本处理、正则匹配(历史用户)

如何运行脚本

1. Script → Run → 选择脚本文件(或直接拖拽 .vbs/.py 文件到SecureCRT窗口)

2. 也可以从命令行启动:`SecureCRT.exe /SCRIPT "D:\scripts\auto_login.vbs"`

3. Script → Run Recent → 快速重新运行最近使用过的脚本

SecureCRT脚本对象模型

所有脚本语言共享同一套 SecureCRT 对象模型,核心对象包括:

- crt.Screen:读取终端屏幕内容、等待特定字符串出现

- crt.Screen.Send:向远程设备发送命令

- crt.Session:当前会话的连接/断开/日志控制

- crt.Dialog:弹出消息框或输入框与用户交互

- crt.FileTransfer:文件上传下载(SFTP)

在CSDN和知乎的竞品教程中,大多只覆盖了VBScript的基础发送命令;本教程将同时介绍Python脚本的高级应用。

编写自动登录脚本

自动登录是脚本自动化最常见的应用场景。以下是一个 VBScript 自动登录脚本示例:

' SecureCRT 自动登录脚本 (VBScript)
' 保存为 auto_login.vbs

Sub Main()
    ' 建立SSH连接
    crt.Session.Connect "/SSH2 192.168.1.100"

    ' 等待用户名提示
    crt.Screen.WaitForString "login:"
    crt.Screen.Send "root" & vbCr

    ' 等待密码提示
    crt.Screen.WaitForString "Password:"
    crt.Screen.Send "your_password" & vbCr

    ' 等待登录成功提示
    crt.Screen.WaitForString "$"

    ' 可选:登录后自动执行命令
    crt.Screen.Send "uptime" & vbCr
    crt.Screen.Send "df -h" & vbCr
End Sub

脚本说明

- `crt.Session.Connect`:建立指定协议的连接

- `crt.Screen.WaitForString`:等待远程设备输出特定字符串后再继续

- `crt.Screen.Send`:发送命令(`vbCr` 是回车换行)

安全提示:不要在脚本中硬编码明文密码!建议配置 SSH密钥认证 代替密码登录,脚本中只需指定密钥路径即可。

批量配置脚本

网络工程师经常需要对多台交换机执行相同配置。以下脚本演示如何逐台连接设备并执行命令:

' 批量配置脚本 (VBScript)
' 对多台交换机执行相同配置命令

Sub Main()
    Dim devices
    devices = Array("192.168.1.1", "192.168.1.2", "192.168.1.3")

    For Each ip In devices
        crt.Session.Connect "/TELNET " & ip
        crt.Screen.WaitForString "Username:"
        crt.Screen.Send "admin" & vbCr
        crt.Screen.WaitForString "Password:"
        crt.Screen.Send "password" & vbCr
        crt.Screen.WaitForString "#"

        ' 执行配置命令
        crt.Screen.Send "show version" & vbCr
        crt.Screen.WaitForString "#"
        crt.Screen.Send "show running-config" & vbCr
        crt.Screen.WaitForString "#"

        ' 断开当前连接,继续下一台
        crt.Session.Disconnect
    Next

    crt.Dialog.MessageBox "批量配置完成!"
End Sub

以上脚本适合Telnet管理的网络设备场景。如果是SSH管理的Linux服务器,配合 SSH连接教程 中的参数即可。

Python 脚本高级应用

Python 脚本可以利用丰富的标准库和第三方库,实现比 VBScript 更复杂的自动化任务。Competitor sites like CSDN focus primarily on VBScript; we cover Python for advanced use cases.

设备巡检脚本(Python)

# SecureCRT 设备巡检脚本
# 连接多台设备并收集关键指标

import datetime

def check_device(ip, username, password):
    """连接单台设备并收集信息"""
    cmd = "/SSH2 /L %s /PASSWORD %s %s" % (username, password, ip)
    crt.Session.Connect(cmd)

    crt.Screen.WaitForString("$", 5)

    # 收集系统信息
    crt.Screen.Send("hostname" + "\r")
    crt.Screen.WaitForString("$")
    crt.Screen.Send("uptime" + "\r")
    crt.Screen.WaitForString("$")
    crt.Screen.Send("df -h / | tail -1" + "\r")
    crt.Screen.WaitForString("$")

    crt.Session.Disconnect()

# 主程序
devices = [
    {"ip": "192.168.1.100", "username": "root", "password": "xxx"},
    {"ip": "192.168.1.101", "username": "root", "password": "xxx"},
]

for device in devices:
    check_device(**device)

crt.Dialog.MessageBox("巡检完成!时间: " + str(datetime.datetime.now()))

Python vs VBScript 选择建议

- 简单自动登录 → VBScript(代码更短,学习成本低)

- 复杂逻辑/数据处理 → Python(有丰富的字符串处理、正则表达式、日期计算库)

- 与外部API交互 → Python(requests库可以调用监控系统API)

- Windows环境兼容性 → VBScript(无需额外安装Python解释器)

脚本录制功能(新手友好)

如果不想手写代码,SecureCRT 提供了脚本录制功能——自动将你的键盘操作转换为 VBScript 代码:

1. Script → Start Recording Script

2. 正常执行你的操作(连接/输入命令/断开)

3. Script → Stop Recording Script

4. 保存为 .vbs 文件

5. 以后直接运行这个 .vbs 文件即可重复刚才的操作

录制脚本的局限性

- 录制的是精确的时间序列操作,无法应对网络延迟变化

- 建议录制后手工优化:添加 `WaitForString` 替代固定延时

- 加入错误处理逻辑(如登录失败时的重试机制)

录制的脚本可以作为学习模板,理解 SecureCRT 对象模型后再手动编写更健壮的脚本。

常见问题

SecureCRT脚本支持什么语言?

SecureCRT 内置脚本引擎支持 VBScript、JScript、Python、PerlScript 四种语言。VBScript 是Windows环境中最常用的选择(无需额外安装),Python适合复杂逻辑和数据处理场景。

SecureCRT怎么编写自动登录脚本?

使用 `crt.Session.Connect` 建立连接,`crt.Screen.WaitForString` 等待登录提示,`crt.Screen.Send` 自动输入用户名和密码。建议使用密钥认证代替密码,脚本中只需指定密钥路径即可。

SecureCRT批量执行命令脚本怎么写?

有两种方式:1)用 Send to All Sessions 手动批量发送;2)写脚本循环连接多台设备并依次执行命令。本页面的"批量配置脚本"章节提供了完整的 VBScript 示例代码。

SecureCRT脚本和PuTTY有区别吗?

PuTTY完全没有脚本引擎,不支持任何自动化脚本。这是SecureCRT作为商业软件的核心优势之一——内置脚本引擎可大幅提升批量运维效率。

下载 SecureCRT 使用脚本自动化

VanDyke Software SecureCRT 8.1.0,安装后享有30天试用

安全下载 Windows版

24.22 MB | MD5公开可验证 | 30天免费试用