[雪峰磁针石博客]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),后续步骤不会执行。

相关文章
Python
5 0
|
1天前
|
JSON 数据格式 索引
python 又一个点运算符操作的字典库:Munch
python 又一个点运算符操作的字典库:Munch
4 0
|
1天前
|
数据挖掘 数据处理 索引
如何使用Python的Pandas库进行数据筛选和过滤?
Pandas是Python数据分析的核心库,提供DataFrame数据结构。基本步骤包括导入库、创建DataFrame及进行数据筛选。示例代码展示了如何通过布尔索引、`query()`和`loc[]`方法筛选`Age`大于19的记录。
8 0
|
2天前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名
【4月更文挑战第22天】Pandas Python库提供数据排序和排名功能。使用`sort_values()`按列进行升序或降序排序,如`df.sort_values(by='A', ascending=False)`。`rank()`函数用于计算排名,如`df['A'].rank(ascending=False)`。多列操作可传入列名列表,如`df.sort_values(by=['A', 'B'], ascending=[True, False])`和分别对'A'、'B'列排名。
13 2
|
3天前
|
算法 Python
请解释Python中的关联规则挖掘以及如何使用Sklearn库实现它。
使用Python的mlxtend库,可以通过Apriori算法进行关联规则挖掘。首先导入TransactionEncoder和apriori等模块,然后准备数据集(如购买行为列表)。对数据集编码并转换后,应用Apriori算法找到频繁项集(设置最小支持度)。最后,生成关联规则并计算置信度(设定最小置信度阈值)。通过调整这些参数可以优化结果。
25 9
|
3天前
|
Python
如何使用Python的Pandas库进行数据缺失值处理?
Pandas在Python中提供多种处理缺失值的方法:1) 使用`isnull()`检查;2) `dropna()`删除含缺失值的行或列;3) `fillna()`用常数、前后值填充;4) `interpolate()`进行插值填充。根据需求选择合适的方法处理数据缺失。
30 9
|
3天前
|
索引 Python
如何在Python中使用Pandas库进行季节性调整?
在Python中使用Pandas和Statsmodels进行季节性调整的步骤包括:导入pandas和seasonal_decompose模块,准备时间序列DataFrame,调用`seasonal_decompose()`函数分解数据为趋势、季节性和残差,可选地绘制图表分析,以及根据需求去除季节性影响(如将原始数据减去季节性成分)。这是对时间序列数据进行季节性分析的基础流程。
19 2
|
4天前
|
缓存 自然语言处理 数据处理
Python自然语言处理面试:NLTK、SpaCy与Hugging Face库详解
【4月更文挑战第16天】本文介绍了Python NLP面试中NLTK、SpaCy和Hugging Face库的常见问题和易错点。通过示例代码展示了如何进行分词、词性标注、命名实体识别、相似度计算、依存关系分析、文本分类及预训练模型调用等任务。重点强调了理解库功能、预处理、模型选择、性能优化和模型解释性的重要性,帮助面试者提升NLP技术展示。
22 5
|
5天前
|
Python
如何使用Python的Plotly库创建交互式图表?
Plotly是Python的交互式图表库,支持多种图表类型,如折线图、散点图、柱状图。使用步骤包括安装库、导入模块、准备数据、创建图表对象、添加数据和设置属性,最后显示或保存图表。
16 6
|
5天前
|
机器学习/深度学习 数据采集 算法
请解释Python中的Sklearn库以及它的主要用途。
Sklearn是Python的机器学习库,提供数据预处理、特征选择、分类回归、聚类、模型评估和参数调优等工具。包含监督和无监督学习算法,如SVM、决策树、K-means等,并提供样例数据集便于实践。它是进行机器学习项目的重要资源。
13 1