pxssh交换机自动刷限速模板

本文介绍如何使用Python的PXSSH模块自动向交换机上配置限速模板。通过SSH登录交换机,并批量创建从5Mbps到200Mbps的限速策略,适用于ASR9K系列设备。

  写个跟交换机相关的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 类的对象.
     =  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)

相关链接:

https://github.com/pexpect/pexpect

http://www.oschina.net/question/12_7583?fromerr=1oyKdQ4w

另外python自带telnet的模块telnetlib,相关资料:

https://docs.python.org/2/library/telnetlib.html




      本文转自Jx战壕  51CTO博客,原文链接:http://blog.51cto.com/xujpxm/1737501,如需转载请自行联系原作者






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值