用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。

转载于:https://www.cnblogs.com/05ata/p/6568258.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值