原文地址 : http://support.huawei.com/ecommunity/bbs/10173767.html
#!/usr/bin/python #coding=utf-8 # 通过telnet 远程登录设备 import telnetlib import os import time import sys reload(sys) sys.setdefaultencoding("utf-8") ### 配置登录信息 _Username = 'huawei' _Password = 'xxxxxxxx' _Host = '192.168.1.110' # 命令结束提示符 # 正常模式如<R1> 来提示用户输入命令,所以取>为作为标志符 _UsermodTag = '>' # system-view模式如[R1] 来提示用户输入命令,所以取]为作为标志符 _SysrmodTag = ']' # 实例化telnet对象,建立一个主机连接 telnetsession = telnetlib.Telnet(_Host) # 开启调试,按需开启,方便判断 #telnetsession.set_debuglevel(2) # read_until()来判断缓冲区中的数据是否有想要的内容,如果没有就等待 # 当然也可以使用expect方法,与read_until差不多,但是它可以支持正则表达式,功能要强大得多 # 区配字符,当出现'Username'时,输入用户名 login_prompt = 'Username' response = telnetsession.read_until(login_prompt) if login_prompt in response: #print response print '[*] Username: ',_Username telnetsession.write(_Username + "\n") time.sleep(2) # 区配字符,当出现'Password'时,输入密码 password_prompt = 'Password' response = telnetsession.read_until(password_prompt) if password_prompt in response: #print response print '[*] Password: ',_Password time.sleep(2) telnetsession.write(_Password+ "\n") # 如果登录成功,则出现类似<R1>,使用_UsermodTag来进行捕获 response = telnetsession.read_until(_UsermodTag) if _UsermodTag in response: print response time.sleep(2) # 执行一个dir 命令 telnetsession.write("dir\n") response = telnetsession.read_until(_UsermodTag) if _UsermodTag in response: print response time.sleep(2) # 切换到system-view模式 telnetsession.write("system-view\n") # 此时使用_SysrmodTag来进行捕获输出 response = telnetsession.read_until(_SysrmodTag) if _SysrmodTag in response: print response time.sleep(2) # 测试完毕后,关闭连接 telnetsession.close() print '[*] Session Close.'