转载说明:转载请注明出处:http://blog.youkuaiyun.com/qq_25134989/article/details/78923564
下面直接上源码
# -*- coding: utf-8 -*- import telnetlib import time def telnetip(tnip): # 连接Telnet服务器 tn = telnetlib.Telnet(tnip, port=23, timeout=50) # 输入登录用户名 tn.read_until('Username:') tn.write(username + '\n') # 输入登录密码 # tn.read_until('Password:') tn.write(password + '\n') time.sleep(1) tn.write('system' + '\n') # 输入命令 tn.write('domain paoa' + '\n') tn.write('****' + '\n') tn.write('****' + '\n') time.sleep(50) result1 = tn.read_very_eager() # 获得结果 print result1 # 命令执行完毕后,终止Telnet连接(或输入exit退出) tn.close() # tn.write('exit\n') if __name__ == '__main__': # 配置选项 ip = '****' # Telnet交换机IP username = '****' # 登录用户名 password = '****' # 登录密码 telnetip(ip)
下面是telnetlib模块的API用法(中文版)(来源:http://python.usyiyi.cn/documents/python_352/library/telnetlib.html)
源代码: Lib/telnetlib.py
telnetlib
模块提供了实现Telnet协议的Telnet
类。有关协议的详细信息,请参见 RFC 854。此外,它为协议字符(见下文)和telnet选项提供符号常量。telnet选项的符号名称遵循arpa/telnet.h
中的定义,删除了前导TELOPT_
。对于传统上不包括在arpa/telnet.h
中的选项的符号名称,请参阅模块源本身。
telnet命令的符号常量有:IAC,DONT,DO,WONT,WILL,SE(子协议结束),NOP(无操作),DM(数据标记),BRK中止输出),AYT(您有),EC(擦除字符),EL(擦除线),GA(前进),SB(子协商开始)。
-
class
-
Telnet
表示到Telnet服务器的连接。实例最初未默认连接;必须使用open()
方法建立连接。或者,主机名和可选端口号也可以传递给构造函数,在这种情况下,将在构造函数返回之前建立与服务器的连接。可选的timeout参数指定阻塞操作(如连接尝试)的超时(以秒为单位)(如果未指定,将使用全局默认超时设置)。不要重新打开已连接的实例。
这个类有许多
read_*()
方法。注意,当读取连接结束时,其中一些引发EOFError
,因为它们可能由于其他原因返回一个空字符串。请参阅下面的各个说明。
telnetlib.
Telnet
(host=None, port=0[, timeout])
也可以看看
-
RFC 854 - Telnet协议规范
- Telnet协议的定义。
21.19.1.Telnet对象
Telnet
实例具有以下方法:
-
读取直到遇到预期的给定字节字符串,或直到超时秒过去。
当找不到匹配项时,返回可用的可用空间,可能为空字节。如果连接已关闭且没有可用的已处理过的数据,则引发
EOFError
。
Telnet.
read_until
(expected, timeout=None)
-
读取所有数据,直到EOF为字节;阻塞直到连接关闭。
Telnet.
read_all
()
-
读取至少一个字节的处理过的数据,除非命中EOF。如果命中EOF,返回
b''
。如果没有可用的数据,则阻止。
Telnet.
read_some
()
Telnet.
read_very_eager
()