pxssh交换机自动刷限速模板
2016-01-22 00:27
471 查看
写个跟交换机相关的python脚本,利用pxssh自动向交换机上刷限速模板。
pxssh是从pexpect模块导入而来,pexpect 是一个用来启动子程序并对其进行自动控制的 Python 模块,它可以用来和像 ssh、ftp、passwd、telnet 等命令行程序进行自动交互。
首先你的交换机需要支持ssh登陆。
限速模板样式如下:
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
pxssh是从pexpect模块导入而来,pexpect 是一个用来启动子程序并对其进行自动控制的 Python 模块,它可以用来和像 ssh、ftp、passwd、telnet 等命令行程序进行自动交互。
首先你的交换机需要支持ssh登陆。
限速模板样式如下:
policy-map 5m class qos police rate 5 mbps conform-action transmit ! ! class class-default ! end-policy-map开始前先安装pexpect:
pip install pexpect利用交换机ssh登陆的方式,执行脚本,脚本如下:
$ 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的例子代码,简单直观,供参考:
#!/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)相关链接:
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
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法