telnet可以用来远程管理交换机,现在估计用的不多了,用ssh会更安全一点,这里只是作一个记录
# encoding=utf-8
## telnet test
import telnetlib
import time
def telnet(host, username, password, commands):
"""Telnet远程登录"""
# 连接Telnet服务器
tn = telnetlib.Telnet(host, port=23, timeout=30)
# tn.debuglevel(2) # 调试信息
# 输入登录用户名
tn.read_until('Username:') # 这个要根据实际提示符来填写,可以设置timeout
print '正在输入用户名'
time.sleep(0.1) # sleep是为了防止程序执行过快
tn.write(username + '\n') # 输入用户名
# 输入登录密码
tn.read_until('Password:') # 这个要根据实际提示符来填写,可以设置timeout
print '正在输入密码'
time.sleep(0.1)
tn.write(password + '\n') # 输入密码
# 登录完毕后执行命令
print '正在执行命令'
for cmd in commands: # 循环命令列表
time.sleep(0.1)
tn.write('%s\r\n' %cmd) # 执行命令
# 输出命令结果
print '正在读取命令信息'
time.sleep(0.1)
data = ''
while data.find('EOF') == -1: # 循环记录输出,直到碰上EOF(这个EOF是在命令列表自定义的,目的是为了更加准确的匹配结束符)
time.sleep(0.1)
data += tn.read_very_eager() # 记录输出并且合并到data变量中
print data # 输出完整的信息
print '完成信息输出'
# 执行完毕后,终止Telnet连接(或输入exit退出)
time.sleep(0.1)
tn.close() # tn.write('exit\n')
print '结束程序'
if __name__ == '__main__':
# 配置选项
host = '10.1.1.1' # Telnet服务器IP
username = 'USERNAME' # 登录用户名
password = 'PASSWD' # 登录密码
commands = ['show version', 'show clock', 'EOF'] # 需要执行的命令列表,最后一个必须为结束符
telnet(host, username, password, commands)