设为首页 收藏本站
查看: 3106|回复: 0

[经验分享] python跟H3C 5024E交换机交互获取交换机的配置信息

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-6 09:47:21 | 显示全部楼层 |阅读模式
                      # 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


QQ截图20151106094709.png
                   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-135761-1-1.html 上篇帖子: python基础zongjie 下篇帖子: linux脚本显示进度条 python 交换机 信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表