telnetlib python详解_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),后续步骤不会执行。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值