博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pxssh交换机自动刷限速模板
阅读量:5828 次
发布时间:2019-06-18

本文共 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 类的对象.
    
= 
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,如需转载请自行联系原作者

你可能感兴趣的文章
使用《Deep Image Prior》来做图像复原
查看>>
Linux基础命令---rmdir
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>
FreeMarker-Built-ins for strings
查看>>
argparse - 命令行选项与参数解析(转)
查看>>
修改上一篇文章的node.js代码,支持默认页及支持中文
查看>>
我理想中的前端工作流
查看>>
Chrome 广告屏蔽功能不影响浏览器性能
查看>>
Android状态栏实现沉浸式模式
查看>>
使用Openfiler搭建ISCSI网络存储
查看>>
zabbix监控php状态(四)
查看>>
实战Django:小型CMS Part2
查看>>
原创]windows server 2012 AD架构试验系列 – 16更改DC计算机名
查看>>
统治世界的十大算法
查看>>
SSH中调用另一action的方法(chain,redirect)
查看>>
表格排序
查看>>