本文共 2667 字,大约阅读时间需要 8 分钟。
写个跟交换机相关的python脚本,利用pxssh自动向交换机上刷限速模板。
pxssh是从pexpect模块导入而来,pexpect 是一个用来启动子程序并对其进行自动控制的 Python 模块,它可以用来和像 ssh、ftp、passwd、telnet 等命令行程序进行自动交互。
首先你的交换机需要支持ssh登陆。
限速模板样式如下:
1 2 3 4 5 6 7 8 9 | policy-map 5m class qos police rate 5 mbps conform-action transmit ! ! class class-default ! end-policy-map |
开始前先安装pexpect:
1 | pip install pexpect |
利用交换机ssh登陆的方式,执行脚本,脚本如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | $ cat router_addXianSu.py #!/usr/bin/env python # _*_ coding: utf-8 _*_ # This script is used to add router XianSu template for YanFaTest ASR9K. from pexpect import pxssh #导入模块 #import getpass hostname = '10.10.10.1' username = 'admin' password = 'mypassword' #hostname = raw_input("Please input your hostname:").strip() #username = raw_input('Please input your username:').strip() #password = getpass.getpass('Please input your password:').strip() s = pxssh.pxssh() s.login( hostname , username, password, login_timeout=5, auto_prompt_reset=False) #注意这里的几个参数 print '******* HOST %s success login!**********' % hostname print '*******router configure excute now******' s.sendline( 'configure terminal' ) s.prompt() print s.before for size in xrange(5,205,5): print '*********add XianSu MuBan now***********' #添加从5m,10m,...,200m的限速模板 cmd = 'policy-map %sm' %size print '*****%s*****' %cmd s.sendline(cmd) s.sendline( 'class qos' ) cmd = 'police rate %s mbps' %size print '*********police rate %s mbps' %cmd s.sendline(cmd) s.sendline( 'conform-action transmit' ) s.sendline( 'show configuration' ) s.prompt() print s.before s.sendline( 'commit' ) s.prompt() print s.before continue s.sendline( 'exit' ) #交换机执行完后退出 s.close() #退出,结束 |
以下是从开源社区里找的一个pxssh的例子代码,简单直观,供参考:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #!/usr/bin/env python import pxssh import getpass try : # 调用构造函数,创建一个 pxssh 类的对象. s = pxssh.pxssh() # 获得用户指定 ssh 主机域名. hostname = raw_input ( 'hostname: ' ) # 获得用户指定 ssh 主机用户名. username = raw_input ( 'username: ' ) # 获得用户指定 ssh 主机密码. password = getpass.getpass( 'password: ' ) # 利用 pxssh 类的 login 方法进行 ssh 登录,原始 prompt 为'$' , '#'或'>' s.login (hostname, username, password, original_prompt = '[$#>]' ) # 发送命令 'uptime' s.sendline ( 'uptime' ) # 匹配 prompt s.prompt() # 将 prompt 前所有内容打印出,即命令 'uptime' 的执行结果. print s.before # 发送命令 ' ls -l ' s.sendline ( 'ls -l' ) # 匹配 prompt s.prompt() # 将 prompt 前所有内容打印出,即命令 ' ls -l ' 的执行结果. print s.before # 退出 ssh session s.logout() except pxssh.ExceptionPxssh, e: print "pxssh failed on login." print str (e) |
相关链接:
另外python自带telnet的模块telnetlib,相关资料:
本文转自Jx战壕 51CTO博客,原文链接:http://blog.51cto.com/xujpxm/1737501,如需转载请自行联系原作者