用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 ...
随机推荐
- Oracle中对XMLType的简单操作(extract、extractvalue)
前几天一直在做Oracle对XMLType字段的操作,我还不是Oracle大拿,到网上找了很多资料,但是很多就是单一功能的介绍,不能很好的解决问题,现在在这里总结下. 1.下面先创建一个名未test. ...
- once函数,简约不简单的
module.exports = once once.proto = once(function () { Object.defineProperty(Function.prototype, 'onc ...
- 前后端分离和restful开发规范
一.web开发的两种模式 1.前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高. 这种应用模式比 ...
- HDU4499
In Chinese Chess, there is one kind of powerful chessmen called Cannon. It can move horizontally or ...
- docker容器启动几分钟之后自动退出
2018-11-06 问题: docker容器启动几分钟之后自动退出 log日志报错 WARNING: overlay2: the backing xfs filesystem is formatte ...
- Linux按键设备驱动一
① request_irq函数用于注册中断 int request_irq(unsigned int irq, void(*handler)(int, void*, struct pt_reg*), ...
- Python 中下划线的 5 种含义
详细请参考这篇文章 单前导下划线:_var 单末尾下划线:var_ 双前导下划线:__var 双前导和末尾下划线:__var__ 单下划线:_
- 智能手表ticwatch穿戴体验
前言 可穿戴设备近几年越来越火,最开始是谷歌眼睛.手环,再到手表.VR眼镜,相信未来几年这片领域依旧火热~ 自从谷歌发布Android Wear.苹果发布Apple Watch之后,智能手表的战役就正 ...
- Python 中数据的序列化和反序列化(json处理)
概念: JSON(JavaScript Object Notation):是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming ...
- PLSQL Developer 客户端工具的安装
安装之前先把客户端工具instantclient_12_1拷贝到一个没有中文和空格的目录中去, 比如我直接放到了D:\tools下面.注意这里需要的是32bit的. 下面开始安装PLSQL Devel ...