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

下面我将分步详细解释如何实现。
第一步:环境准备 - 配置 SecureCRT
要让 SecureCRT 能够运行 Python 脚本,你需要先进行一些简单的设置。
-
安装 Python: 确保你的电脑上已经安装了 Python,建议使用 Python 3.x 版本,你可以在命令行中输入
python --version或py --version来检查。 -
在 SecureCRT 中设置 Python 解释器路径:
(图片来源网络,侵删)- 打开 SecureCRT。
- 点击菜单栏的
Options->Global Options...。 - 在弹出的窗口中,导航到
Advanced->Python。 - 在
Python Interpreter Path字段中,填入你的 Python 解释器的完整路径。- Windows 示例:
C:\Python39\python.exe(请根据你的实际安装路径修改) - macOS/Linux 示例:
/usr/bin/python3或/usr/local/bin/python3
- Windows 示例:
- 点击
OK保存设置。
-
(可选但推荐)设置脚本工作目录: 你可以指定一个文件夹,SecureCRT 在运行脚本时将此文件夹作为当前工作目录,这方便你管理脚本和配置文件。
- 在同一个
Python设置页面,找到Script Working Directory。 - 填入一个你希望存放脚本的文件夹路径,
C:\MySecureCRTScripts。 - 点击
OK保存。
- 在同一个
第二步:编写 Python 脚本
现在我们来写一个 Python 脚本,这个脚本将连接到 SecureCRT 中一个已配置好的会话。
示例脚本:连接到指定会话
假设你已经在 SecureCRT 中配置了一个名为 MyRouter 的会话。
- 创建一个新的文本文件,命名为
connect_to_session.py。 - 将以下代码复制到文件中:
# -*- 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 内置的脚本运行器(最简单)
- 确保 SecureCRT 已经打开,脚本无法从一个未运行的 SecureCRT 实例启动。
- 在 SecureCRT 中,点击菜单栏的
Scripting->Run。 - 在弹出的文件选择窗口中,找到你刚刚创建的
connect_to_session.py文件并选中它。 - 点击
Open。
脚本将在后台运行,如果一切正常,你会看到一个新标签页打开,并自动连接到 MyRouter 这个会话,SecureCRT 的脚本输出窗口(通常在底部)会打印 成功连接到会话: MyRouter。
通过命令行(更灵活,适合自动化)
这种方法允许你从外部脚本或批处理文件中调用 SecureCRT 并执行 Python 脚本。
-
找到 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
- Windows:
-
编写命令: 命令的基本格式是:
SecureCRT.exe /SCRIPT "C:\path\to\your_script.py" -
示例 (Windows): 打开命令提示符 (CMD) 或 PowerShell,然后运行:
"C:\Program Files (x86)\VanDyke Software\SecureCRT\SecureCRT.exe" /SCRIPT "C:\MySecureCRTScripts\connect_to_session.py"
- 注意: 路径中如果包含空格,最好用双引号括起来。
-
执行效果:
- 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 逻辑的场景。 |
对于大多数用户来说,掌握“第一步”和“第二步”,然后使用“方法一”或“方法二” 就足以满足日常的自动化需求了。
