[雪峰磁针石博客]python库介绍-telnetlib:Telnet客户端

简介:

简介

telnetlib模块提供的Telnet类实现了Telnet协议(参见rfc854)。它为协议字符和telnet选项提供符号常量,符号常量来源于arpa/telnet.h,去掉了前缀TELOPT_。

telnet命令有: IAC, DONT, DO, WONT, WILL, SE (Subnegotiation End), NOP (No Operation), DM (Data Mark), BRK (Break), IP (Interrupt process), AO (Abort output), AYT (Are You There), EC (Erase Character), EL (Erase Line), GA (Go Ahead), SB (Subnegotiation Begin)。

class telnetlib.Telnet(host=None, port=0[, timeout])

快速入门


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author Rongzhong Xu 2016-08-25 wechat: pythontesting
"""
Name: telnet_demo.py

Tesed in python3.5
"""

import telnetlib

HOST = "172.17.100.18"
user = "test"
password = "123456"


def command(con, flag, str_=""):
    data = con.read_until(flag.encode())
    print(data.decode(errors='ignore'))
    con.write(str_.encode() + b"\n")
    return data

tn = telnetlib.Telnet(HOST)
command(tn, "login: ", user)
if password:
    command(tn, "Password: ", password)
command(tn, "$", "ls")
command(tn, "$", " exit")
command(tn, "$", "")
tn.close()

执行结果:


$ python3 telnet_demo.py 
CentOS release 6.7 (Final)
Kernel 2.6.32-573.18.1.el6.x86_64 on an x86_64
login: 
Password: 

Last login: Thu Aug 25 17:20:18 from 172.17.153.6
[test@public01 ~]$
 ls
[test@public01 ~]$
 exit
logout

参考资料

方法

  • Telnet.read_until(expected[, timeout])

读取直到遇到了给定的字符串expected或超时秒数。

当找不到匹配时,返回读取内容。连接关闭或者没有数据时触发EOFError异常。

  • Telnet.read_all()

读取所有数据直到EOF,阻塞直到连接关闭。

  • Telnet.read_some()

读取至少一个字节的数据,除非EOF。 如果没有数据则阻塞。

  • Telnet.read_very_eager()

非阻塞地读取。连接关闭或者没有数据时触发EOFError异常。返回b''如果没有数据,

  • Telnet.read_eager()

读取的已有数据。(快)

连接关闭或者没有数据时触发EOFError异常。返回b''如果没有数据,

  • Telnet.read_lazy()

读取的已有数据(懒)

连接关闭或者没有数据时触发EOFError异常。返回b''如果没有数据,

  • Telnet.read_very_lazy()

读取的已有数据(很懒)

连接关闭或者没有数据时触发EOFError异常。返回b''如果没有数据,

  • Telnet.read_sb_data()

返回的SB/SE pair (suboption begin/end)之间的数据。此方法永远不会阻塞。

  • Telnet.open(host[, port[, timeout]])

连接到主机。可选的第二个参数是默认为标准的 Telnet 端口 (23) 的端口号。可选的超时参数指定以秒计) 阻塞操作 (如连接尝试超时 (如果不指定,将使用全局默认超时设置)。

  • Telnet.msg(msg[, *args])

当调试级别为> 0 打印调试消息。

  • Telnet.set_debuglevel(debuglevel)

设置调试级别。debuglevel越高信息越多。

  • Telnet.close()

关闭该连接。

  • Telnet.get_socket()

返回套接字供内部使用。

  • Telnet.fileno()

返回套接字对象内部使用的文件描述符。

  • Telnet.write(buffer)

写入字符串到套接字,加倍 IAC 的任何字符。连接关闭是可能触发OSError异常。

  • Telnet.interact()

交由用户控制。

  • Telnet.mt_interact()

多线程的版本的interact()。

  • Telnet.expect(list[, timeout])

读取直到匹配正则表达式项列表中的一个。

list是一个正则表达式列表,包含编译(regex 对象)或未编译(字节字符串)。timeout以秒为单位, 默认值为无限期阻塞。

返回元组的三个项目: index为匹配正则表达式的位置;match 对象;此时读了的字节。

文件结尾或没有数据时触发EOFError异常,不匹配时返回(-1, None, data)。

如果正则表达式是贪婪模式或者如果多个表达式可以匹配相同的输入,结果是不确定的,可能取决于I/O定时。

  • Telnet.set_option_negotiation_callback(callback)

每次从输入流读取telnet选项时,调用callback(telnet socket, command (DO/DONT/WILL/WONT), option),后续步骤不会执行。

相关文章
|
9月前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
2118 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
9月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
854 0
|
8月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
810 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
8月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
598 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
9月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1477 102
|
9月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
485 104
|
9月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
373 103
|
9月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
400 82
|
8月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
500 3
|
8月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
726 3

推荐镜像

更多