一、介绍
telnet模块提供客户端Telnet协议的服务,用于远程连接计算机,通常使用的通信端口是23。
二、使用
telnetlib模块定义了一个Telnet类,用于创建一个Telnet连接class telnetlib.Telnet(host=None, port=0[, timeout])
Telnet表示与Telnet服务器的连接
不要重新打开已经连接的实例
一个Telnet对象是一个上下文管理器,可以被用在 with声明
三、实例变量的方法
| 方法 | 说明 |
|---|---|
| Telnet.read_until(expected, timeout=None) | 一直读到expected字符串出现,或者timeout超时为止 |
| Telnet.read_all() | 读取所有数据,直到遇到EOF字符位置 |
| Telnet.read_some() | 除非遇到EOF,否则至少读取一个字节的数据。 |
| Telnet.read_very_eager() | 读取所有可能不阻塞I/O的内容 |
| Telnet.read_eager() | 读取随时可用的数据 |
| Telnet.read_lazy() | 处理并返回队列中已经存在的数据 |
| Telnet.read_very_lazy() | 返回队列中的所有的可用数据 |
| Telnet.read_sb_data() | 返回在SB / SE对之间收集的数据 |
| Telnet.open(host, port=0[, timeout]) | 连接到主机 可选的第二个参数是端口号,默认是23端口 |
| Telnet.msg(msg, *args) | 当调试级别为>0时,打印调试消息。如果存在其他参数,则使用标准字符串格式运算符将它们替换为消息 |
| Telnet.set_debuglevel(debuglevel) | 设置调试级别 |
| Telnet.close() | 关闭连接 |
| Telnet.write(buffer) | 将字节字符串写入套接字 |
| Telnet.expect(list, timeout=None) | 读取直到正则表达式列表中的一个匹配 |
import telnetlib##指定Telnet服务器host = "http://www.dummy.com"## 指定用户账号username = "johnny"+"\n"## 指定用户密码password = "123457"+ "\n"## 创建Telnet类的实例变量telnet = telnetlib.Telnet(host)## 登录Telnet服务器,输入用户账号和密码telnet.read_until("login: ")telnet.write(username)telnet.read_until("Password: ")telnet.write(password)##输入命令while 2:command = raw_input("[shell]: ")telnet.write(command)if command == "exit":breaktelnet.read_all()import getpassimport telnetlibHOST = "localhost"user = input("Enter your remote account: ")password = getpass.getpass()tn = telnetlib.Telnet(HOST)tn.read_until(b"login: ")tn.write(user.encode('ascii') + b"\n")if password: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('ascii'))
