用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 ...
随机推荐
- hdu6325 Interstellar Travel 凸包变形
题目传送门 题目大意: 给出n个平面坐标,保证第一个点和第n个点y值为0,其余点的x坐标都在中间,要从 i 点走到 j 点的要求是 i 点的横坐标严格小于 j 的横坐标,并且消耗的能量是(xi * y ...
- 118th LeetCode Weekly Contest Powerful Integers
Given two non-negative integers x and y, an integer is powerful if it is equal to x^i + y^j for some ...
- SpringBoot---开发的热部署
1.模板的热部署 在SpringBoot中,模板引擎的页面默认是开启缓存的: 如果修改了页面的内容,则刷新不到修改后的页面: 可以在application.properties中关闭模板引擎的缓存: ...
- Java基础21-构造函数之间的调用
public class Test{ public static void main(String[] args){ Persion p2=new Persion("小明",22) ...
- 04-struts2获得参数
1 struts2 获得参数 1-属性驱动获得参数 1 Demo8Action package www.test.c_param; import java.util.Date; import com. ...
- netstat参数
1.功能与说明 netstat 用于显示linux中各种网络相关信息.如网络链接.路由表.接口状态链接.多播成员等等. 定义:Netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TC ...
- HRBUST 1161——Leyni——————【线段树单点更新,区间查询】
Leyni Time Limit: 3000 MS Memory Limit: 65536 KB 64-bit integer IO format: %lld , %llu Java class na ...
- html结构内容拾忆
文本格式化: <b>This text is bold</b><!--定义粗体文本.--> <strong>This text is strong< ...
- intent 活动之间穿梭
1.从当前activity,跳转到当前应用程序的activity Intent intent = new Intent(MainActivity.this, Intent2Activity.class ...
- 01.c#中的访问修饰符
public 公开的 private 私有的,只能在当前类的内部访问 protected 受保护的,只能在当前内的内部以及该类的子类可以访问. internal 可以在同一个程序(项目)集中 ...