首页主机资讯Debian SecureCRT脚本编写入门

Debian SecureCRT脚本编写入门

时间2025-11-27 12:34:03发布访客分类主机资讯浏览1153
导读:入门概览 SecureCRT 提供脚本自动化能力,常用语言包括 VBScript、Python、JScript/Perl,可完成登录、批量执行、日志采集等任务。 在 Linux/Debian 环境中,脚本同样可用;若更偏好原生 SSH 自...

入门概览

  • SecureCRT 提供脚本自动化能力,常用语言包括 VBScript、Python、JScript/Perl,可完成登录、批量执行、日志采集等任务。
  • Linux/Debian 环境中,脚本同样可用;若更偏好原生 SSH 自动化,也可在外部用 Python + Paramiko 实现,不依赖 GUI。
  • 建议先明确你的使用场景:是“在 SecureCRT 内自动化交互”,还是“脱离 GUI 的批量 SSH 执行”。

环境准备与脚本执行

  • 脚本录制与回放:在 SecureCRT 中先“开始录制”,完成一次手工操作后“停止并保存”,即可回放脚本,适合快速生成批量配置脚本雏形。
  • 在会话中直接运行脚本:打开目标会话,菜单 Script → Run,选择脚本文件即可执行;也可在脚本里用 ConnectInTab 打开新标签页并自动登录。
  • 交互窗口:菜单 View → Interact 可打开交互窗口,便于边写边试脚本片段(适合调试)。
  • 外部执行思路:若不使用 SecureCRT 的脚本引擎,可在 Debian 上用 Python + Paramiko 编写纯 SSH 客户端脚本,便于集成 CI/CD 或调度系统。

Python 入门脚本模板

  • 说明:以下模板演示“连接设备 → 等待提示符 → 执行命令 → 保存日志 → 处理分页”的完整流程。请将提示符(如 #、**> `)与命令按你的设备类型调整。
  • 关键点:
    • 使用 crt.Screen.WaitForString / WaitForStrings 同步等待关键字,避免“命令未回显就继续”的竞态。
    • 处理 ---- More ---- 分页时,匹配到“More”就自动发送空格继续。
    • 通过 crt.Session.LogFileName / Log(True) 开启按会话的日志,便于审计与回溯。
# $language = "Python"
# $interface = "1.0"

import time

def log_name():
    return time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime())

def main():
    # 基本配置
    user = 'admin'
    passwd = 'your_password'
    host = '192.0.2.10'
    prompt = '#'  # 设备命令提示符,按需改为 '>
' 等

    # 连接参数(示例为 SSH2)
    # 注意:SecureCRT 的 ConnectInTab 参数语法依版本而异,以下为常见形式
    connect_cmd = f"/SSH2 /L {
user}
 /PASSWORD {
passwd}
 {
host}
"
    tab = crt.Session.ConnectInTab(connect_cmd)
    time.sleep(1)

    # 等待登录完成(出现提示符)
    tab.Screen.WaitForString(prompt)

    # 开启日志
    ts = log_name()
    tab.Session.LogFileName = f"{
ts}
_{
host}
    .log"
    tab.Session.Log(True)

    # 执行命令
    commands = [
        "show version",
        "show ip interface brief"
    ]
    for cmd in commands:
        tab.Screen.Send(cmd + "\r")
        # 等待命令回显完成:匹配提示符或分页提示
        idx = tab.Screen.WaitForStrings([prompt, "---- More ----"], 10)
        while idx == 2:  # 遇到分页
            tab.Screen.Send(" ")  # 继续翻页
            idx = tab.Screen.WaitForStrings([prompt, "---- More ----"], 5)

    # 结束
    tab.Session.Log(False)
    crt.Dialog.MessageBox("Done.")

main()
  • 常见对象与用途(便于扩展脚本):
    • crt.Screen:发送/接收、等待字符串、读取屏幕缓冲。
    • crt.Session:连接/断开、日志控制、会话属性。
    • crt.Dialog:弹窗输入/提示(如 InputBox/MessageBox)。
    • crt.Arguments:获取脚本启动参数(便于参数化主机、账号等)。

VBScript 入门脚本模板

  • 说明:VBScript 在 SecureCRT 中同样常用,语法直观,适合快速编写登录与批量命令脚本。
  • 关键点:使用 WaitForString 等待登录提示,用 Send 发送用户名/密码与命令;处理分页时匹配 “---- More ----” 并自动发送空格继续。
# $language = "VBScript"
# $interface = "1.0"

Sub Main
    Dim user, passwd, host, prompt
    user = "admin"
    passwd = "your_password"
    host = "192.0.2.10"
    prompt = "#"   ' 设备命令提示符,按需改为 '>
    '

    ' 连接
    crt.Session.Connect "/SSH2 /L " &
     user &
     " /PASSWORD " &
     passwd &
     " " &
     host
    crt.Screen.WaitForString "ogin:"

    ' 登录
    crt.Screen.Send "admin" &
     vbCrLf
    crt.Screen.WaitForString "assword:"
    crt.Screen.Send passwd &
     vbCrLf
    crt.Screen.WaitForString prompt

    ' 日志
    crt.Session.LogFileName = "c:\temp\" &
     host &
     "_" &
     Replace(Now, "/", "-") &
     ".log"
    crt.Session.Log True

    ' 命令
    crt.Screen.Send "show version" &
     vbCrLf
    crt.Screen.WaitForString prompt

    crt.Screen.Send "show ip interface brief" &
     vbCrLf
    crt.Screen.WaitForString prompt

    ' 分页处理
    Do
        Dim idx
        idx = crt.Screen.WaitForStrings(Array(prompt, "---- More ----"), 5)
        If idx = 2 Then
            crt.Screen.Send " "
        Else
            Exit Do
        End If
    Loop

    crt.Session.Log False
    MsgBox "Done."
End Sub
  • 常用 API 提示:
    • crt.Screen.WaitForString(“str”, timeout)crt.Screen.WaitForStrings(Array, timeout) 用于同步等待;后者返回匹配到的索引(从 1 开始),超时返回 0

调试与最佳实践

  • 同步与等待:将 crt.Screen.Synchronous 设为 True 可减少输出错位;配合 WaitForString/WaitForStrings 明确“下一步何时继续”。
  • 日志与审计:在关键会话上启用 Session.Log,并按时间/主机命名日志文件,便于回溯与对比。
  • 参数化与文件驱动:从 CSV/IP 列表 读取主机与账号,循环处理多台设备,降低维护成本。
  • 安全建议:避免在脚本中硬编码密码;优先使用 SSH 密钥、会话配置或凭据管理器;必要时对日志做脱敏处理。
  • 分页与慢设备:遇到 ---- More ---- 或设备回显慢时,适当延长超时或加入重试逻辑,确保命令完整执行。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian SecureCRT脚本编写入门
本文地址: https://pptw.com/jishu/757776.html
Oracle数据库如何在Ubuntu上迁移 SecureCRT与Debian系统兼容性分析

游客 回复需填写必要信息