网易首页 > 网易号 > 正文 申请入驻

Python 库手册:telnetlib Telnet 远程登录模块

0
分享至

telnetlib 是 Python 标准库中的一个模块,专用于编写 Telnet 协议的客户端程序。Telnet(TELecommunication NETwork)是早期的远程登录协议,通过基于文本的方式进行命令交互,主要用于远程登录服务器或设备进行管理。

常见应用场景:

(1)自动化远程管理 Telnet 设备(如路由器、交换机等)。

(2)测试支持 Telnet 的网络服务。

(3)编写交互式脚本批量发送命令。

(4)与旧版系统集成远程终端会话。

◆ ◆

核心概念

1、Telnet 协议

工作在 TCP 23 端口,基于明文的远程控制协议。

telnetlib 的核心类是 Telnet,其本质是对 TCP Socket 的封装,专门针对 Telnet 协议交互进行了增强。

2、Telnet 会话

连接建立后,用户通过发送命令并接收响应与远程主机交互。

3、延时与阻塞

Telnet 会话常涉及等待响应或指定字符串出现。

4、匹配读取

expect() 方法支持使用正则表达式读取直到特定内容。

◆ ◆

应用举例

例 1:连接 Telnet 服务器并登录

import telnetlib

host = "your.telnet.server"
user = "admin"
password = "123456"

tn = telnetlib.Telnet(host)
tn.read_until(b"login: ")
tn.write(user.encode('ascii') + b"\n")
tn.read_until(b"Password: ")
tn.write(password.encode('ascii') + b"\n")

tn.write(b"ls\n")  # 发送命令
tn.write(b"exit\n")

print(tn.read_all().decode('utf-8'))

例 2:读取特定响应并处理超时

import telnetlib

tn = telnetlib.Telnet("localhost", 8023, timeout=5)

tn.write(b"help\n")
index, match, data = tn.expect([b"exit", b"help"], timeout=3)
print("Matched pattern index:", index)
print("Output:", data.decode())

例 3:启用调试模式以查看发送/接收内容

import telnetlib

tn = telnetlib.Telnet("localhost")
tn.set_debuglevel(1)  # 显示调试信息
tn.write(b"hello\n")
tn.close()

例 4:从 Telnet 中读取多行输出

import telnetlib

tn = telnetlib.Telnet("localhost")

tn.write(b"show config\n")
output = tn.read_until(b"#", timeout=5)
print(output.decode())

tn.close()

例 5:异常处理与断开连接

import telnetlib

try:
    tn = telnetlib.Telnet("192.168.1.1", timeout=3)
    tn.write(b"status\n")
    print(tn.read_all().decode())
except Exception as e:
    print("连接失败:", e)
finally:
    tn.close()

◆ ◆

常用函数速览

close()

关闭 Telnet 连接。

参数:无

返回:无

expect(list_of_regex, timeout=None)

等待直到输入匹配 list_of_regex 中的任一项。

参数

list_of_regex:一个正则表达式字节串列表

timeout:超时(秒)

返回:(匹配索引, 匹配对象, 匹配前的输出数据)

get_socket()

返回内部使用的原始 socket 对象(可用于设置超时等操作)。

参数:无

返回:socket.socket 对象

open(host, port=23, timeout=10)

连接远程 Telnet 主机。

参数

host:主机名或 IP 地址

port:端口(默认 23)

timeout:连接超时(秒)

返回:无(如失败抛出异常)

read_all()

读取所有可用数据直到连接关闭。

参数:无

返回:读取的字节串

read_very_eager()

尽可能多地读取当前可用的数据。

参数:无

返回:字节串

read_until(expected, timeout=None)

读取直到遇到期望的字节串或超时。

参数

expected:目标字节串

timeout:可选,秒数

返回:读取的字节串(包括 expected)

set_debuglevel(level)

设置调试输出级别(0=关闭,1=输出所有通信)。

参数:整数(调试等级)

返回:无

write(buffer)

向 Telnet 服务器发送数据。

参数:字节串(如需发送文本,需编码为 bytes)

返回:无

Telnet(host=None, port=23, timeout=socket._GLOBAL_DEFAULT_TIMEOUT)

创建一个 Telnet 客户端对象,并可选地立即连接到指定主机与端口。如果未提供 host 参数,可稍后调用 .open() 方法进行连接。

参数

host(可选):字符串类型,远程主机名或 IP 地址。如未指定,则不会立即连接

port(可选):整数类型,远程主机的端口号,默认值为 23(标准 Telnet 端口)

timeout(可选):浮点数,单位为秒,表示连接超时时间。可使用 socket._GLOBAL_DEFAULT_TIMEOUT 表示使用全局默认值

返回:Telnet 实例对象,提供一系列方法进行 Telnet 通信(如 .read_until()、.write() 等)

示例:

import telnetlib

# 方式一:立即连接
tn1 = telnetlib.Telnet("192.168.1.100", 23, timeout=10)

# 方式二:延迟连接
tn2 = telnetlib.Telnet()
tn2.open("192.168.1.100", 23)

◆ ◆

补充说明

1、telnetlib 不支持加密通信,慎用于生产环境。

2、在很多现代操作系统中,Telnet 默认是关闭的,可使用软件如 telnetd 启动服务。

3、可用 putty、BusyBox、OpenWRT 等环境测试 Telnet。

4、Telnet 适用于调试简易协议或模拟控制台行为。

点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
林肯号到底有没有被打中?伊朗导弹齐射后,最惨的居然是巴基斯坦

林肯号到底有没有被打中?伊朗导弹齐射后,最惨的居然是巴基斯坦

扬子的故事屋
2026-07-09 09:22:18
为什么往死里扫黄?看完这群网友的“绝世高论”,我沉默了

为什么往死里扫黄?看完这群网友的“绝世高论”,我沉默了

吃瓜局
2026-07-08 17:01:29
致2死!深圳通报一起交通事故,4人被建议移送公安机关

致2死!深圳通报一起交通事故,4人被建议移送公安机关

南方都市报
2026-07-09 16:44:30
特朗普北约峰会会见泽连斯基,当面称泽连斯基为普京,称将授权乌克兰生产爱国者、愿意在某个时候访问乌克兰

特朗普北约峰会会见泽连斯基,当面称泽连斯基为普京,称将授权乌克兰生产爱国者、愿意在某个时候访问乌克兰

极目新闻
2026-07-09 11:00:48
面子里子全丢光!周星驰新片8小时票房才破千万,王心凌纯纯走面

面子里子全丢光!周星驰新片8小时票房才破千万,王心凌纯纯走面

动物奇奇怪怪
2026-07-09 16:01:18
17亿大案!阿根廷足协黑幕曝光:遭美国FBI调查 涉嫌洗钱+诈骗

17亿大案!阿根廷足协黑幕曝光:遭美国FBI调查 涉嫌洗钱+诈骗

念洲
2026-07-09 15:20:36
竟能同时“促发”胃癌和肠癌?北大肿瘤医院重磅研究:根除它,结直肠癌风险最多降62%!

竟能同时“促发”胃癌和肠癌?北大肿瘤医院重磅研究:根除它,结直肠癌风险最多降62%!

医药养生保健报社
2026-07-05 20:00:32
血脂与出汗大有关联!医生提醒:高血脂患者,入夏后5事千万别碰

血脂与出汗大有关联!医生提醒:高血脂患者,入夏后5事千万别碰

健康之光
2026-07-08 13:03:19
特雷杨带一家签约,被扫地出门,仍签2.1亿肥约,儿女双全很幸福

特雷杨带一家签约,被扫地出门,仍签2.1亿肥约,儿女双全很幸福

大西体育
2026-07-09 16:15:26
S妈回应大S遗产卡余额不足42万,称女儿养孩子和打官司花光了

S妈回应大S遗产卡余额不足42万,称女儿养孩子和打官司花光了

开开森森
2026-07-09 08:53:43
CCTV5直播阿根廷VS瑞士,比赛时间友好,梅西狂刷纪录,能否进4强

CCTV5直播阿根廷VS瑞士,比赛时间友好,梅西狂刷纪录,能否进4强

体育大学僧
2026-07-09 12:33:08
A股:紧急提醒2.5亿股民!从明天7月10日起,A股或迎大级别逼空行情?

A股:紧急提醒2.5亿股民!从明天7月10日起,A股或迎大级别逼空行情?

趋势清风侠
2026-07-09 15:21:12
官方出手!马未都铜佛风波升级,自曝不是同一个,8处细节对不上

官方出手!马未都铜佛风波升级,自曝不是同一个,8处细节对不上

小鋭有话说
2026-07-06 14:29:47
8万元签下林葳名声大噪!宁波男篮官方:聘任霍楠为俱乐部总经理

8万元签下林葳名声大噪!宁波男篮官方:聘任霍楠为俱乐部总经理

狼叔评论
2026-07-09 15:30:32
世界杯争议!阿根廷足协接受调查!卫冕冠军幕后彻底炸锅!

世界杯争议!阿根廷足协接受调查!卫冕冠军幕后彻底炸锅!

澜归序
2026-07-09 13:48:22
江苏两地市委书记调整

江苏两地市委书记调整

娱乐小可爱蛙
2026-07-09 11:45:23
斯基拉:吉马良斯与阿森纳就个人条款达成一致,将签约至2031

斯基拉:吉马良斯与阿森纳就个人条款达成一致,将签约至2031

懂球帝
2026-07-09 14:31:06
视频丨世界杯4强争夺战 对阵图、比赛时间、看点一览!

视频丨世界杯4强争夺战 对阵图、比赛时间、看点一览!

环球网资讯
2026-07-09 07:41:27
巴西:7月开收电动车关税!中国:明白了,6月我把全年的车拉过去

巴西:7月开收电动车关税!中国:明白了,6月我把全年的车拉过去

混沌录
2026-07-07 22:54:14
出局后首次社媒发声!41岁C罗暗示暂不退出国家队:永远的葡萄牙

出局后首次社媒发声!41岁C罗暗示暂不退出国家队:永远的葡萄牙

风过乡
2026-07-09 05:52:40
2026-07-09 17:31:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1942文章数 84关注度
往期回顾 全部

科技要闻

字节杀回来了!深度实测Seedream 5.0 Pro

头条要闻

哈兰德让鲁尼兑现承诺:你说挪威进八强就跳默西河漂流

头条要闻

哈兰德让鲁尼兑现承诺:你说挪威进八强就跳默西河漂流

体育要闻

信哈兰德吃小孩,还是信非洲足球会魔法?

娱乐要闻

陈翔发文“苍天饶过谁”登热搜,旧事再引关注

财经要闻

九部门:支持加快零售业创新发展

汽车要闻

理想纯电旗舰i9官宣 9系旗舰再添新车

态度原创

家居
时尚
数码
房产
艺术

家居要闻

2026建博会(广州) 公装联探展交流活动

“长+长穿法”今夏又火了!这样穿时髦又显高

数码要闻

洛斐“机械手感”TMR磁轴键盘HYZEN67发售,1396元起

房产要闻

猛踩油门!绿地,又拿下海南一个大城更!

艺术要闻

新青年·新征程——2026青年艺术作品展 油画选

无障碍浏览 进入关怀版