用python管理Cisco路由器
目前DevOps是整个运维发展的方向,Network的运维也一样。使用程序控制底层的路由器是最基本的要求之一。
本文简单解释如何用Python控制路由器,对网络设备进行配置。
Python和网络设备连接,一般采用SSH。本文采用Paramiko的ssh来与路由器通讯。
一、安装Paramiko
Paramiko可以通过标准的pip install安装,也可以通过集成的安装包Anaconda2种的conda安装。具体如下:
1. pip install
Linux自带Paramiko模块,不需要安装。如果没有,可以通过一下命令安装:
yum install python-pip
pip install paramiko
2. conda install

C:\Program Files\Anaconda2\Scripts>conda.exe install paramiko
Fetching package metadata ...........
Solving package specifications: .
Package plan for installation in environment C:\Program Files\Anaconda2:
The following NEW packages will be INSTALLED:
paramiko: 2.0.2-py27_0
The following packages will be UPDATED:
conda: 4.3.11-py27_0 --> 4.3.14-py27_1
Proceed ([y]/n)? y
paramiko-2.0.2 100% |###############################| Time: 0:00:00 703.11 kB/s
conda-4.3.14-p 100% |###############################| Time: 0:00:00 2.33 MB/s

安装完成后,开始编写我们的代码。
二、代码
代码分几块
1. import
需要用到如下的包
#!/usr/bin/env python
import paramiko
import os,platform
import time
2. 定义变量

# 检查节点的信息
pinghost="www.sina.com.cn"
# 路由器相关信息
host='42.159.x.x'
user='azureuser'
password="xxxx"

3.定义SSH# SSH参数ssh=paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try:
ssh.connect(host,username=user,password=password,look_for_keys=False,allow_agent=False)
except ValueError:
print "Can't connect to Router" ssh_con=ssh.invoke_shell()
output=ssh_con.recv(500)
# 路由器参数初始化
ssh_con.send("\n")
ssh_con.send("show ip int brie\n")
ssh_con.send("conf t\n")
ssh_con.send("int gi 2\n")
ssh_con.send("no shutdown\n")
ssh_con.send("end\n")

至此,做好了准备工作。
4. 探测、判断、控制

while True:
# 判断节点是否通
response=os.system("ping " + ("-n 1 " if platform.system().lower()=="windows" else "-c 1 ") + pinghost)
if response == 0:
pingstatus = "Network Active"
else:
# 如果不通,对路由器进行修改
pingstatus = "Network Down"
ssh_con.send("conf t\n")
ssh_con.send("int gi 2\n")
ssh_con.send("shutdown\n")
ssh_con.send("end\n")
time.sleep(2)
output = ssh_con.recv(500)
print output
print pingstatus
# 每10s探测一次
time.sleep(10)

通过ping进行检测,并且可以判断是否windows机器,并相应的参数不同。 如果能ping通,不做动作,如果ping不通,修改路由器端口shutdown。
用python管理Cisco路由器的更多相关文章
- 使用python管理Cisco设备-乾颐堂
今天发现一个老外使用python写的管理cisco设备的小框架tratto,可以用来批量执行命令. 下载后主要有3个文件: Systems.py 定义了一些不同设备的操作系统及其常见命令. Conne ...
- cisco路由器配置教程
配置cisco路由器 经过几十年的发展,从最初的只有四个节点的ARPANET发展到现今无处不在的Internet,计算机网络已经深入到了我们生活当中.随着计算机网络规模的爆炸性增长,作为连接设备的路由 ...
- 实验1: Cisco路由器基础配置
实验 1: Cisco路由器基础配置 1. 路由器的运行模式:Router> 用户模式,通常用来查看统计信息,但不能修改路由器的设置.Router# 特许模式,可以查看并修改 ...
- 使用 python 管理 mysql 开发工具箱 - 1
Mysql 是一个比较优秀的开源的数据库,很多公司都在使用.作为运维人员,经常做着一些重复性的工作,比如创建数据库实例,数据库备份等,完全都可以使用 python 编写一个工具来实现. 一.模块 Co ...
- Cisco路由器的6种模式
Cisco路由器的6种模式 -------------------------------------------------------------------------------------- ...
- 使用Python管理数据库
使用Python管理数据库 这篇文章的主题是如何使用Python语言管理数据库,简化日常运维中频繁的.重复度高的任务,为DBA们腾出更多时间来完成更重要的工作.文章本身只提供一种思路,写的不是很全 ...
- cisco路由器 三层交换机简单环境配置实例(图)
出处:http://www.jb51.NET/softjc/56600.html cisco路由器&三层交换机简单环境配置实例 一.网络拓扑图: 二.配置命令: 1.路由器的配置: inter ...
- [转] Cisco路由器DNS配置
禁用Web服务 Cisco路由器还在缺省情况下启用了Web服务,它是一个安全风险.如果你不打算使用它,最好将它关闭.举例如下: Router(config)# no ip http server 配置 ...
- 使用 python 管理 mysql 开发工具箱 - 2
这篇博文接着上篇文章<使用 python 管理 mysql 开发工具箱 - 1>,继续写下自己学习 python 管理 MySQL 中的知识记录. 一.MySQL 的读写分离 学习完 My ...
随机推荐
- maven-eclipse-plugin downloadSources downloadJavadocs
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-eclip ...
- Linux中断分层--工作队列
1. 工作队列是一种将任务推后执行的方式,它把推后的任务交由一个内核线程去执行.这样中断的下半部会在进程上下文执行,他允许重新调度甚至睡眠.每个被推后的任务叫做“工作”,由这些工作组成的队列称为工作队 ...
- PIE SDK矢量数据项查看
1. 功能简介 矢量数据由大量要素信息构成,矢量数据项查看可以看到数据的属性表,下面就基于PIE SDK,介绍矢量数据项查看功能的实现. 2. 功能实现说明 2.1. 实现思路及原理说明 第一步 加载 ...
- mysql 研发规范
1. 命名 a) 有意义. b) 数据库.表,都用小写,仅使用下划线和小写字母. c) 索引以idx_开头. d) 命名不要过长,尽量少于25个字符. e) 不要使用保留 ...
- (转载) win10生成SSH keys
(转载) win10生成 SSH keys: SSH key 可以让你在你的电脑和Code服务器之间建立安全的加密连接. 先执行以下语句来判断是否已经存在本地公钥: cat ~/.ssh/id_ ...
- zabbix 监控ipmi
一,配置ipmi yum -y install OpenIPMI OpenIPMI-devel ipmitool freeipmi 登入IDARAC 在服务端测试是否可以获得数据 ipmitool - ...
- Python 集合(set)类型的操作——并交差
介绍 python的set是一个无序不重复元素集,基本功能包括关系测试和消除重复元素. 集合对象还支持并.交.差.对称差等. sets 支持 x in set. len(set).和 for x in ...
- 深入理解JavaScript系列(32):设计模式之观察者模式
介绍 观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们 ...
- 实现JFileChooser的多种文件类型限制(设置过滤器)
使用时直接调用方法. // 多类型时使用 public void FileFilter(JFileChooser F) { String[][] fileNames = { { ".java ...
- javascript window.open in safari
在ios系统中,无法使用 window.open 打开url,经过一番尝试终于找到了解决办法 var url='http://www.baodu.com'; var deviceAgent = nav ...