专栏首页python3python跟H3C 5024E交换机交

python跟H3C 5024E交换机交

# coding: utf8 import re, sys import pexpect # enable/disable debug mode DEBUG = False def telnet_login(ip, pwd, cmd, ps):     child = pexpect.spawn('telnet %s' % ip)     # 是否启用调试模式, 默认位False,在上面设置DEBUG=True后开启调试模式     if DEBUG:         print '[' + '-' * 30 + "DEBUG INFO START" + '-' * 30 + "]\n"         child.logfile_read = sys.stdout  # telnet输出至标准输出     child.expect('(?i)Password: ', timeout=2)  # 匹配Password: ,注意问号后有空格     child.send(pwd + '\r')  # 这里要输入密码+回车(\r),不要用sendline方法     child.expect('Please press ENTER.\r\n', timeout=1)     child.send('\r')  # 根据上面提示,按回车后继续     child.expect(ps[0], timeout=2)  # 匹配第1提示符     child.send('system-view' + '\r')  # 进入system-view视图     child.expect(ps[1], timeout=2)  # 匹配第2个提示符     output = ""     out=""     for tcmd in cmd:         child.send(tcmd + '\r')  # 执行命令         child.expect(tcmd + '\r')  # 匹配命令回显         child.expect(ps[1], timeout=2)  # 匹配命令执行完提示符         out = child.before  # 捕获命令的输出结果         if out != '':             out = re.sub('.*\[.*', '', out)  # 处理输出结果的尾部提示符             out = re.sub('\015', '', out)  # 处理输出结果的尾部^M(实际上是回车符)             output += "\n" + tcmd + "执行结果: \n"+"\n".join([j.strip() for j in out.split('\n') if j != ''])  # 删除命令输出中的多余空行和行首尾空格     return child, output if __name__ == '__main__':     host = "192.168.*.*"     password = "######"     command = ['dis ip', 'dis arp'] # 执行命令列表     prompt = ['\)\>', '\)\]'] # 提示符     c, cmdstdout = telnet_login(host, password, command, prompt)     # debug开启后, 也可以把命令输出结果写入文件     if DEBUG:         with open("/tmp/telnet_output.txt", "w") as f:             f.write(cmdstdout)         print '\n\n[' + '-' * 30 + "DEBUG INFO END" + '-' * 30 + "]\n"     print '[' + '-' * 30 + "telnet command output" + '-' * 23 + "]\n"     print cmdstdout  # 打印命令执行结果     c.close(force=True)

## 注释: 其中 c   和 cmdstdout 是用来接收 telnet_login 函数返回 的  child 和 output

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux工具使用(3)——Telnet

    telnet-server-0.17-31.EL4.5 telnet-0.17-31.EL4.5

    py3study
  • python2爬虫编码问题

    py3study
  • python中的setdefaulten

    http://blog.csdn.net/magicharvey/article/details/20055949

    py3study
  • 如何用Python为以太坊和比特币生成vanity地址

    今天,我们将编写一个非常简单的python脚本来生成虚荣地址,这些地址是以某个短语或字母序列开头的加密货币地址。该过程涉及生成私钥并检查目标短语的地址,直到找到...

    笔阁
  • Java持久化之 -- 傲娇的NIO

    xxxBuffer buffer = xxxBuffer.allocate(最大容量);

    房上的猫
  • [ASP.NET Core 3框架揭秘]服务承载系统[3]:总体设计[上篇]

    前面的实例演示了服务承载的基本编程模式,接下来我们从设计的角度来重新认识服务承载模型。总的来说,服务承载模型主要由如下图所示的三个核心对象组成:多个通过IHos...

    蒋金楠
  • 漫谈虚拟内存

    如上图,程序1、程序2、程序3装入到内存,而程序2运行完成被换出,内存空闲出20k,然后进来程序4,大小为25K,此时,只有两处空闲块,10K和20K,没有一处...

    木可大大
  • 代码规范:换行对齐问题

    对一于单行代码过长时,采取换行,这个没有什么可争议的,主要焦点在新的一行从哪开始,通常有两派,一派就是如上述两段代码所示,另一派则采用如下规范:

    一见
  • 索引设计指南

    圣杰
  • POJ - 1321 棋盘问题

    在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋...

    风骨散人Chiam

扫码关注云+社区

领取腾讯云代金券