杰瑞科技汇

Python如何用代码打开SecureCRT连接?

Python 脚本不是“打开” SecureCRT 这个程序,而是“告诉”一个已经在运行的 SecureCRT 实例去执行某个操作,比如连接到一个新的会话。

Python如何用代码打开SecureCRT连接?-图1
(图片来源网络,侵删)

下面我将分步详细解释如何实现。


第一步:环境准备 - 配置 SecureCRT

要让 SecureCRT 能够运行 Python 脚本,你需要先进行一些简单的设置。

  1. 安装 Python: 确保你的电脑上已经安装了 Python,建议使用 Python 3.x 版本,你可以在命令行中输入 python --versionpy --version 来检查。

  2. 在 SecureCRT 中设置 Python 解释器路径

    Python如何用代码打开SecureCRT连接?-图2
    (图片来源网络,侵删)
    • 打开 SecureCRT。
    • 点击菜单栏的 Options -> Global Options...
    • 在弹出的窗口中,导航到 Advanced -> Python
    • Python Interpreter Path 字段中,填入你的 Python 解释器的完整路径。
      • Windows 示例: C:\Python39\python.exe (请根据你的实际安装路径修改)
      • macOS/Linux 示例: /usr/bin/python3/usr/local/bin/python3
    • 点击 OK 保存设置。
  3. (可选但推荐)设置脚本工作目录: 你可以指定一个文件夹,SecureCRT 在运行脚本时将此文件夹作为当前工作目录,这方便你管理脚本和配置文件。

    • 在同一个 Python 设置页面,找到 Script Working Directory
    • 填入一个你希望存放脚本的文件夹路径,C:\MySecureCRTScripts
    • 点击 OK 保存。

第二步:编写 Python 脚本

现在我们来写一个 Python 脚本,这个脚本将连接到 SecureCRT 中一个已配置好的会话。

示例脚本:连接到指定会话

假设你已经在 SecureCRT 中配置了一个名为 MyRouter 的会话。

  1. 创建一个新的文本文件,命名为 connect_to_session.py
  2. 将以下代码复制到文件中:
# -*- coding: utf-8 -*-
# 这个脚本必须在 SecureCRT 内部运行。
# 你可以通过 SecureCRT 的菜单 Scripting -> Run 来运行它。
# 导入 SecureCRT 的脚本 API
from SecurePlatform import crt
def main():
    """
    主函数:连接到指定的会话。
    """
    # 1. 定义要连接的会话名称(这个名称必须和你在 SecureCRT 中配置的完全一致)
    session_name_to_connect = "MyRouter"  # <--- 修改成你自己的会话名称
    # 2. 使用 crt.Session.Connect() 方法连接会话
    #    这个方法会查找并连接所有匹配名称的会话(文件夹路径下的会话)。
    try:
        crt.Session.Connect(session_name_to_connect)
        crt.Screen.Synchronous = True  # 强制同步屏幕,确保命令发送后等待输出
        print(f"成功连接到会话: {session_name_to_connect}")
        # --- 连接成功后可以执行的操作 ---
        # 发送一个命令并打印输出
        # crt.Screen.Send("show version\r") # 发送回车键
        # result = crt.Screen.WaitForString("#", 5) # 等待看到提示符 "#",最多等待5秒
        # if result:
        #     output = crt.Screen.ReadString("#") # 读取到下一个 "#"
        #     print(output)
    except Exception as e:
        # 如果连接失败,会抛出异常
        print(f"连接会话 '{session_name_to_connect}' 失败,错误信息: {e}")
# 脚本入口点
if __name__ == "__main__":
    main()

代码解释:

  • from SecurePlatform import crt: 这是关键,它导入了 SecureCRT 提供的 Python API 模块 crt
  • crt.Session.Connect(session_name): 这是核心功能,它接收一个会话名称作为参数,并尝试连接。
  • crt.Screen: 这个对象代表了当前活动的终端屏幕,你可以用它来发送命令 (Send)、等待字符串 (WaitForString)、读取输出 (ReadString) 等。
  • try...except: 强烈建议使用异常处理,因为会话可能不存在、连接可能失败。

第三步:运行脚本

你有两种主要的方式来运行这个脚本。

通过 SecureCRT 内置的脚本运行器(最简单)

  1. 确保 SecureCRT 已经打开,脚本无法从一个未运行的 SecureCRT 实例启动。
  2. 在 SecureCRT 中,点击菜单栏的 Scripting -> Run
  3. 在弹出的文件选择窗口中,找到你刚刚创建的 connect_to_session.py 文件并选中它。
  4. 点击 Open

脚本将在后台运行,如果一切正常,你会看到一个新标签页打开,并自动连接到 MyRouter 这个会话,SecureCRT 的脚本输出窗口(通常在底部)会打印 成功连接到会话: MyRouter

通过命令行(更灵活,适合自动化)

这种方法允许你从外部脚本或批处理文件中调用 SecureCRT 并执行 Python 脚本。

  1. 找到 SecureCRT 的命令行工具

    • Windows: SecureCRT.exe 通常位于安装目录,如 C:\Program Files (x86)\VanDyke Software\SecureCRT\SecureCRT.exe
    • macOS: /Applications/SecureCRT.app/Contents/MacOS/SecureCRT
    • Linux: /opt/vandyke/SecureCRT/SecureCRT
  2. 编写命令: 命令的基本格式是: SecureCRT.exe /SCRIPT "C:\path\to\your_script.py"

  3. 示例 (Windows): 打开命令提示符 (CMD) 或 PowerShell,然后运行:

    "C:\Program Files (x86)\VanDyke Software\SecureCRT\SecureCRT.exe" /SCRIPT "C:\MySecureCRTScripts\connect_to_session.py"
    • 注意: 路径中如果包含空格,最好用双引号括起来。
  4. 执行效果:

    • SecureCRT 没有运行,这个命令会先启动它。
    • 启动后,它会立即加载并执行你指定的 Python 脚本。
    • 你会看到 SecureCRT 的主界面弹出,并且脚本执行的操作(如连接会话)会自动发生。

高级用法:从 Python 外部脚本启动 SecureCRT 并连接

如果你想把所有逻辑都写在一个独立的 Python 脚本里(而不是在 SecureCRT 内部),你需要使用 subprocess 模块来调用 SecureCRT 的命令行接口。

# 这是一个独立的 Python 脚本,run_crt_automation.py
import subprocess
import os
import time
def run_secure_crt_script():
    # --- 配置 ---
    # 1. SecureCRT 可执行文件的路径
    #    Windows: SECURE_CRT_PATH = r"C:\Program Files (x86)\VanDyke Software\SecureCRT\SecureCRT.exe"
    #    macOS: SECURE_CRT_PATH = "/Applications/SecureCRT.app/Contents/MacOS/SecureCRT"
    #    Linux: SECURE_CRT_PATH = "/opt/vandyke/SecureCRT/SecureCRT"
    SECURE_CRT_PATH = r"C:\Program Files (x86)\VanDyke Software\SecureCRT\SecureCRT.exe" # <--- 修改为你的路径
    # 2. 你的 Python 脚本路径
    SCRIPT_PATH = r"C:\MySecureCRTScripts\connect_to_session.py" # <--- 修改为你的脚本路径
    # --- 执行 ---
    if not os.path.exists(SECURE_CRT_PATH):
        print(f"错误: 找不到 SecureCRT 可执行文件: {SECURE_CRT_PATH}")
        return
    if not os.path.exists(SCRIPT_PATH):
        print(f"错误: 找不到脚本文件: {SCRIPT_PATH}")
        return
    print("正在启动 SecureCRT 并运行脚本...")
    # 使用 subprocess.Popen 启动一个新进程
    # /SCRIPT 是 SecureCRT 的命令行参数,用于指定要运行的脚本
    try:
        process = subprocess.Popen([SECURE_CRT_PATH, "/SCRIPT", SCRIPT_PATH])
        # 等待几秒钟,让 SecureCRT 启动并执行脚本
        # 实际项目中,你可能需要更健壮的等待机制
        time.sleep(5) 
        print("SecureCRT 已启动,脚本正在后台执行。")
    except Exception as e:
        print(f"启动 SecureCRT 失败: {e}")
if __name__ == "__main__":
    run_secure_crt_script()
方法 优点 缺点 适用场景
SecureCRT 内部运行 简单,直接,能直接操作已打开的会话。 必须手动先打开 SecureCRT。 日常运维、快速执行单个任务。
命令行调用 可以从外部启动,适合批处理和自动化流程。 需要知道 SecureCRT 的安装路径。 自动化部署、定时任务、与其他工具集成。
外部 Python 脚本 将所有逻辑集中在一个 Python 项目中,管理更方便。 依赖 subprocess,进程间通信相对复杂。 大型自动化项目、需要复杂 Python 逻辑的场景。

对于大多数用户来说,掌握“第一步”和“第二步”,然后使用“方法一”或“方法二” 就足以满足日常的自动化需求了。

分享:
扫描分享到社交APP
上一篇
下一篇