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

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.

相关推荐
热点推荐
住房被写成“大宗耐用消费品”:一次迟到的定性追认

住房被写成“大宗耐用消费品”:一次迟到的定性追认

虎嗅APP
2026-07-17 19:58:21
一位婆婆写给儿媳妇的信,看哭了无数的婆婆,太让人寒心了

一位婆婆写给儿媳妇的信,看哭了无数的婆婆,太让人寒心了

千秋文化
2026-07-18 19:02:42
马宁回应世界杯只执法一场比赛:这是我们决定不了的事情,不要自我制造焦虑,那场比赛完成得非常好,展示了我们中国足球裁判应有的风采

马宁回应世界杯只执法一场比赛:这是我们决定不了的事情,不要自我制造焦虑,那场比赛完成得非常好,展示了我们中国足球裁判应有的风采

鲁中晨报
2026-07-18 11:48:37
查出冠心病,离心衰有多远?医生:还能撑多久,就看这5点!

查出冠心病,离心衰有多远?医生:还能撑多久,就看这5点!

观星赏月
2026-07-18 13:49:29
25国派兵,俄军强敌一次到齐,普京被逼到墙角,中方亮出中俄条约

25国派兵,俄军强敌一次到齐,普京被逼到墙角,中方亮出中俄条约

面包夹知识
2026-07-17 19:13:58
杭州宝爸做了个“卷了么”小程序!每次送儿子上兴趣班都问东问西,老婆发火:“亏你还是程序员……” 没想到,真做成了

杭州宝爸做了个“卷了么”小程序!每次送儿子上兴趣班都问东问西,老婆发火:“亏你还是程序员……” 没想到,真做成了

都市快报橙柿互动
2026-07-18 20:35:47
姆巴佩主动让出金靴?39岁梅西的世界杯,可能只剩这一次了

姆巴佩主动让出金靴?39岁梅西的世界杯,可能只剩这一次了

带你逛体坛
2026-07-18 12:59:22
男子装“富二代”谈恋爱,骗父母称申请研究生要用钱,向亲友借款上千万元,转头为女友花了900多万元,最终因涉嫌诈骗被判11年

男子装“富二代”谈恋爱,骗父母称申请研究生要用钱,向亲友借款上千万元,转头为女友花了900多万元,最终因涉嫌诈骗被判11年

扬子晚报
2026-07-17 21:59:42
大马丁:手每天都疼在小组赛时无法训练,卫冕就退役?首先得赢球

大马丁:手每天都疼在小组赛时无法训练,卫冕就退役?首先得赢球

兰亭墨未干
2026-07-18 08:26:07
有人预言:从下半年开始,社区食堂、预制菜,很可能迎来行业新一轮洗牌

有人预言:从下半年开始,社区食堂、预制菜,很可能迎来行业新一轮洗牌

小谈食刻美食
2026-07-16 08:19:00
图赫尔再谈对阿根廷:如果你需要找人怪罪,我承担这个责任

图赫尔再谈对阿根廷:如果你需要找人怪罪,我承担这个责任

画夕
2026-07-18 13:34:27
笑不活了!网友集体冲进冉莹颖账号评论区,各种神评涌现太离谱

笑不活了!网友集体冲进冉莹颖账号评论区,各种神评涌现太离谱

娱乐圈笔娱君
2026-07-17 16:13:59
许雅钧终于开口了!一句“资产分配”戳中大S家最痛的伤疤!

许雅钧终于开口了!一句“资产分配”戳中大S家最痛的伤疤!

TVB的四小花
2026-07-19 05:13:47
米体:前国米主席莫拉蒂2006年曾2.5亿欧报价梅西,但遭拒绝

米体:前国米主席莫拉蒂2006年曾2.5亿欧报价梅西,但遭拒绝

懂球帝
2026-07-18 20:22:17
十五五重磅信号!工资、养老金双双上涨,这三类人最受益

十五五重磅信号!工资、养老金双双上涨,这三类人最受益

80后已是老登
2026-07-18 13:08:57
Stephen A. Smith怒批詹姆斯:你早就知道去哪,别演了

Stephen A. Smith怒批詹姆斯:你早就知道去哪,别演了

热血体育社
2026-07-17 01:27:26
世界杯金靴奖金为零?FIFA官宣:金球、金手套全都没钱

世界杯金靴奖金为零?FIFA官宣:金球、金手套全都没钱

元气满分吖
2026-07-19 01:30:29
拳王都看不下去了!梅威瑟公开喊话C罗“我兄弟”打脸多少黑粉?

拳王都看不下去了!梅威瑟公开喊话C罗“我兄弟”打脸多少黑粉?

童叔不飙车
2026-07-11 22:42:02
落地!丰台这3个村划入征地范围!未来片区交通拥堵将大幅改善!

落地!丰台这3个村划入征地范围!未来片区交通拥堵将大幅改善!

北京安置房大全
2026-07-17 18:53:49
最牛美女处长,1000天和男上司开房410次,临时工晋升财务副处长

最牛美女处长,1000天和男上司开房410次,临时工晋升财务副处长

三石记
2026-06-26 07:16:19
2026-07-19 06:03:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1967文章数 85关注度
往期回顾 全部

科技要闻

WAIC2026看什么?这份"不迷路"攻略请收好

头条要闻

“黄总请你去包厢” “黄总”身份公布

头条要闻

“黄总请你去包厢” “黄总”身份公布

体育要闻

德尚是非典型法国人 14年执教留下丰厚遗产

娱乐要闻

大S给具俊晔留遗产是昏头?实际上她清醒得很

财经要闻

股民当街砍博主!韩国股市 终极大屠杀

汽车要闻

把中国超跑卖到英国,比亚迪正在被世界看见

态度原创

艺术
游戏
数码
房产
家居

艺术要闻

蒋校长和郭沫若同题“黄帝陵”,水平谁高谁低?

守望先锋推出十年以来最涩泳装,玩家却只关心脚裹得太严实?

数码要闻

RTX 5060换芯不换性能!微星V1版用上5070核心:大芯片散热反而更好

房产要闻

突然出手!千亩城更+一线江景,世嘉亮出超级四代宅!

家居要闻

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

无障碍浏览 进入关怀版