Telnet Client Skill
Telnet 客户端技能,用于远程登录嵌入式设备(如 IPC 摄像头、路由器等)。
功能
- 从
test_config.json的基础信息.连接方式判断是否使用 Telnet - 读取
基础信息.telnet下的连接参数(IP、端口、用户名、密码、提示符) - 建立 Telnet 连接并自动登录
- 支持发送任意指令并获取返回结果
- 自动处理连接超时、认证失败等异常
- 默认保持连接,可复用同一连接执行多条指令,显式
--disconnect才断开
连接生命周期
- 默认保持连接:执行完指令后连接不断开,可继续发送新指令
- 复用连接:当目标主机不变时,再次调用脚本会自动复用已有连接,不会重复创建
- 显式断开:通过
--disconnect参数或调用tc.close()/disconnect()断开
配置要求
配置文件读取采用兼容处理,按以下优先级:
workspace/test_config/test_config.json(全局配置文件)——仅当该配置存在且包含基础信息.telnet配置段时采用- 若全局配置不存在、或存在但没有
基础信息.telnet配置段,回退到技能自身skills/telnet-client-skill/config/test_config.json
test_config.json 中必须有如下结构:
{
"基础信息": {
"连接方式": "telnet",
"telnet": {
"user_name": "root",
"password": "",
"ip_address": "192.168.2.103",
"port": "23",
"prompt": "#"
}
}
}
连接方式为"telnet"时,技能才执行 Telnet 操作prompt是登录后的命令提示符,用于识别命令执行完毕- 用户名/密码/端口均可配置,密码为空表示无密码登录
入口脚本: telnet_client.py
用法
命令行
# 执行指令,连接保持
python skills/telnet-client-skill/scripts/telnet_client.py \
--command "cat /proc/cpuinfo" \
--timeout 10
# 再次调用时复用已有连接,无需重新连接
python skills/telnet-client-skill/scripts/telnet_client.py \
--command "ifconfig"
# 执行完成后断开连接
python skills/telnet-client-skill/scripts/telnet_client.py \
--command "reboot" --disconnect
模块导入
from skills.telnet_client_skill.scripts.telnet_client import TelnetClient
tc = TelnetClient(
host="192.168.2.103",
port=23,
username="root",
password="",
prompt=b"#",
timeout=10
)
tc.connect()
# 可连续执行多条指令,连接保持
output1 = tc.execute("cat /proc/cpuinfo")
output2 = tc.execute("ifconfig")
output3 = tc.execute("ps")
# 显式断开
# tc.close()
显式断开(从其他技能调用)
from skills.telnet_client_skill.scripts.telnet_client import disconnect, get_client
# 获取当前全局连接状态
client = get_client()
if client and client._connected:
print(f"当前已连接到 {client.host}")
# 断开全局连接
disconnect()
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
--command |
str | 否 | 无 | 要执行的指令。不传则仅测试连接 |
--timeout |
int | 否 | 10 | 连接/指令执行超时(秒) |
--disconnect |
flag | 否 | 否 | 指令执行完成后断开连接(默认保持) |
输出
{
"connection_type": "telnet",
"host": "192.168.2.103",
"port": 23,
"username": "root",
"command": "cat /proc/cpuinfo",
"output": "Processor\t: ARMv7 ...\n",
"connect_ok": true,
"command_ok": true,
"config_path": "C:/.../test_config/test_config.json",
"result": {
"passed": true,
"messages": "Telnet连接成功,指令执行成功(连接已保持,未断开)"
},
"test_time": "2026-07-08 11:10:00"
}
结果字段
| 字段 | 类型 | 说明 |
|---|---|---|
connection_type |
str | 连接方式,始终为 "telnet" |
host |
str | 连接的 IP 地址 |
port |
int | 端口号 |
username |
str | 登录用户名 |
command |
str | 执行的指令 |
output |
str | 指令执行输出(含 stdout + stderr) |
connect_ok |
bool | 连接是否成功 |
command_ok |
bool | 指令是否执行成功 |
config_path |
str | 使用的配置文件路径 |
result.passed |
bool | 整体执行结果 |
result.messages |
str | 结果描述 |
test_time |
str | 测试时间 |
输出目录
结果 JSON 写入:workspace/test_output/telnet-client-skill/
变更记录
- v1.0.0 (2026-07-08): 初始版本,支持从配置文件读取 Telnet 参数,执行指令并返回输出。默认保持连接,
--disconnect显式断开 - v1.1.0 (2026-08-26): 配置文件兼容处理——workspace/test_config/test_config.json 不存在、或存在但没有
基础信息.telnet配置段时,回退读取技能自身 config/test_config.json