您的位置:首页 > 编程语言 > Python开发

pxssh交换机自动刷限速模板

2016-01-22 00:27 471 查看
写个跟交换机相关的python脚本,利用pxssh自动向交换机上刷限速模板。

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息