目前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路由器的更多相关文章

  1. 使用python管理Cisco设备-乾颐堂

    今天发现一个老外使用python写的管理cisco设备的小框架tratto,可以用来批量执行命令. 下载后主要有3个文件: Systems.py 定义了一些不同设备的操作系统及其常见命令. Conne ...

  2. cisco路由器配置教程

    配置cisco路由器 经过几十年的发展,从最初的只有四个节点的ARPANET发展到现今无处不在的Internet,计算机网络已经深入到了我们生活当中.随着计算机网络规模的爆炸性增长,作为连接设备的路由 ...

  3. 实验1: Cisco路由器基础配置

    实验 1:  Cisco路由器基础配置 1.    路由器的运行模式:Router>    用户模式,通常用来查看统计信息,但不能修改路由器的设置.Router#    特许模式,可以查看并修改 ...

  4. 使用 python 管理 mysql 开发工具箱 - 1

    Mysql 是一个比较优秀的开源的数据库,很多公司都在使用.作为运维人员,经常做着一些重复性的工作,比如创建数据库实例,数据库备份等,完全都可以使用 python 编写一个工具来实现. 一.模块 Co ...

  5. Cisco路由器的6种模式

    Cisco路由器的6种模式 -------------------------------------------------------------------------------------- ...

  6. 使用Python管理数据库

    使用Python管理数据库   这篇文章的主题是如何使用Python语言管理数据库,简化日常运维中频繁的.重复度高的任务,为DBA们腾出更多时间来完成更重要的工作.文章本身只提供一种思路,写的不是很全 ...

  7. cisco路由器 三层交换机简单环境配置实例(图)

    出处:http://www.jb51.NET/softjc/56600.html cisco路由器&三层交换机简单环境配置实例 一.网络拓扑图: 二.配置命令: 1.路由器的配置: inter ...

  8. [转] Cisco路由器DNS配置

    禁用Web服务 Cisco路由器还在缺省情况下启用了Web服务,它是一个安全风险.如果你不打算使用它,最好将它关闭.举例如下: Router(config)# no ip http server 配置 ...

  9. 使用 python 管理 mysql 开发工具箱 - 2

    这篇博文接着上篇文章<使用 python 管理 mysql 开发工具箱 - 1>,继续写下自己学习 python 管理 MySQL 中的知识记录. 一.MySQL 的读写分离 学习完 My ...

随机推荐

  1. 【VBA研究】Excel VBA利用ADODB访问数据库使用小结

    [转自] http://blog.csdn.net/iamlaosong/article/details/18043433 作者:iamlaosong ▲连接Oracle数据库 Set cnn = C ...

  2. GraphQL 暂停

    别人的文章 http://blog.csdn.net/imwebteam/article/details/53888708 Java 文档都打不开,已经在GitHub上提了 in README.md ...

  3. select 点击的时候获取 value值

    <select onchange="selectUrl1(this.options[this.options.selectedIndex].value);">      ...

  4. 华为 p8上配置outllook,同步日历/邮件

    在网上找了半天,也没有找到合适的方法,在outlook官网上终于找到了配置方式 一种方式是使用outlook的手机应用.(此处省略) 另外一种方式是使用手机自带的邮件/日历应用(见下面操作方法) 如果 ...

  5. 牛客网Java刷题知识点之为什么HashMap不支持线程的同步,不是线程安全的?如何实现HashMap的同步?

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

  6. 让 framset 框架中的页面全屏显示

    <script type="text/javascript"> window.onload=function(){ if(window.parent!=window){ ...

  7. org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.

    今天报了这个异常,这是页面报的 org.springframework.dao.DataIntegrityViolationException: could not execute statement ...

  8. 【ExtJS】关于alias和xtype

    alias 在api里的解释为:别名 类名称简短的别名列表.多数用于定义xtypes Ext.define('MyApp.Panel', { extend: 'Ext.panel.Panel', al ...

  9. TOJ 1717 WOJ

    描述 Alex likes solving problems on WOJ (http://acm.whu.edu.cn/oak). As we all know, a beautiful ballo ...

  10. B站视频下载(VideoHelper)

    继续上次的知乎爬虫, 这次开始了哔哩哔哩的爬虫实践: 首先介绍下如何下载吧: VideoHelper 里面有三种方式下载b站视频. 同样的流程, 还是先抓包,分析参数,寻找参数(包括之前的请求包和页面 ...