自己搭建自动化巡检系统(四) 处理邻居列表

通过之前的三次实验,我们已经可以初步的使用python通过telnet来操作cisco设备,接下来开始新一期的实验

实验目的:网络巡检,之后将信息存储在数据库中

本次实验需要再次拓展新的拓扑,,且实验环境改为ubuntu,后续的拓展将改为在linux环境下经行。本地地址使用10.10.10.142,通过两台管理交换机来控制六台路由器,其地址分配


R1


10.10.10.101


R2


10.10.10.102


R3


10.10.10.103


R4


10.10.10.104


R5


10.10.10.105


R6


10.10.10.106

为每台设备配置IP地址

由于需要批量配置,可以使用CRT的全局发送功能实现批量命令部署

全部部署vty之后,开通三台设备以减少机器负担,后续再陆续开发

检验连通性

发现邻居名单

检验代码的执行结果

接下来的任务是通过系统抓包,对这些数据包进行分析,我们的任务就是通过抓取cdp数据包的形式,记录邻居关系,如果发生邻居关系变动则发出告警信息。

这里说一下思路:获取接受的这串字符串,进行信息处理,即只收取:R1 Fas0/0 Fas0/0,并存入本地数据库中,因此需要在数据库中建立一张邻居表,存储路由器编号、本地接口号,对端接口号。这里安装两个数据库,存储在两个地方,一来是灾备,二来是为了之后做实验,测试关系型数据库和非关系型数据库的在运行效率上的不同。

第一步:截取信息

处理这串字符:

‘show cdp neighbors\r\nCapability Codes: R- Router, T - Trans Bridge, B - Source Route Bridge\r\n                  S - Switch, H - Host, I -IGMP, r - Repeater\r\n\r\nDevice ID       Local Intrfce     Holdtme    Capability Platform  Port ID\r\nR1               Fas 0/0            172        R S I      3640     Fas 0/0\r\nR6               Fas0/0            144        R S I      3640     Fas 0/0\r\nR4               Fas0/0            170        R S I      3640     Fas 0/0\r\nR2>‘

本次打算使用的字符串处理方法是进行切片,后续还可以尝试使用类似正则表达式的方法

等待2秒是需要接收设备返回的邻居信息

处理完成,美滋滋

第二步:设计关系表,并建表

设计mysql

Database:NDB

Table:cdp_nei


RID


Char


Local_Int


Char


Port_ID


Char


First_record


Datetime


Change_record


Datetime

这里已经在mysql中的ndb里面建立一张表,存储的是cdp邻居的信息,基于当前的拓扑,可以预见当所有路由器运行之后,表中的信息条目应该是6*7=42

First_record用于记录首次记录这个数据项的时间,Change_record则会自动记录每次修改这个数据项的时间,在查询的时候,可以通过查看修改数据项的时间,如果发生改变就可以直接提示这条链路发生抖动

第三步:写入数据库中

我们在调试界面试一下该命令可以通过

查看效果

好了之后可以在代码中写入相关指令,不过在这之前,先做一件刺激的事儿,先衫裤再跑路!

代码:

这个是初始版本,后续为了开发方便封装在一个单独的类里面的

写完之后记得同步数据才可以在数据库中查看到相关信息

写入成功,美滋滋啊

第四步:遍历所有设备的邻居信息

思路:依次telnet登录每台设备,对其使用show cdp nei,然后收集对端端口信息,写入数据库中

这里就可以动态的将信息存储在数据库中,下个实验我们将通过编写脚本,将出错的信息告警

关于python-mysql的安装教程以及mysqldb这个工具包的使用笔记在评论中的连接

时间: 2024-11-05 16:30:34

自己搭建自动化巡检系统(四) 处理邻居列表的相关文章

自己搭建自动化巡检系统(五) 抖动告警

基于前面的四次实验,已经积累了一定的经验,现在可以经行进阶设计: 实验目的:定时巡检每台设备的邻居,若出现信息不对称,则发出告警信息. 过程:基于前面设置的环境,cdp协议是每60s进行,一次信息通告,180s内没有回复则清楚邻居信息.可以通过新建一张新表,将新表与旧表进行比较,如果出现信息不对称的情况则可认为网络的某个端口down 思路:写入数据库后逐条取出进行匹配,这里需要考虑到,如果数据库存的内容过大,一次性写入内存会给计算机带来不必要的开销,所以,建议一次查询一条.即取一条信息后查询原表

自己搭建自动化巡检系统(一) 环境准备系统连接gns3

这系列的博文,讲述一个自制的自动巡检系统,仅仅是在cisco设备中运行,之后会基于这个思路,写出一个兼容性的通用巡检系统,传统网工对网络设备是非常熟悉的,然而在编程开发这一块是相对弱势一点.我在想在SDN的背景下,网工一旦会编程,该有多么强势,一些重复执行的步骤,电脑代劳,想想挺开心的. 现在先部署相关的实验环境,我在vmware中安装ubuntu.这里介绍两个方法,可以在ubuntu中安装gns3. 方法一:ubuntu软件商店搜索gns3,点击下载即可 方法二: $ sudo apt-get

自己搭建自动化巡检系统(三) 通过telnet实现远程创建loopback

我们在上一章完成了用代码操作telnet,实现了远程控制,分析前面的代码会发现健壮性太低,需要进行优化,后续会通过开发一个交互式界面来完成人工介入操作网络的过程.本次实验目的:实现自动化创建环回口 首先更新拓扑,拉出新的路由器和一台交换机 import telnetlib import time def main(): Host="192.168.10.100" username="yerik" password="1111" commends=

自动化监控系统(四) 客户端设计

一个程序的目录结构: bin:可执行文件 conf:配置文件 core:逻辑关系 plugins:各种插件 var:日志 客户端: 1.设置一个程序入口,运行该文件A就能启动客户端. 2.给A传位置参数(start 或 stop),通过获取位置参数名称,使用反射来调用相应方法,做到启动或者停止client. 3.启动客户端后,通过发起HTTP请求,获取service下发的任务(监控哪些服务:CPU.memory.network......) 发送请求中,应该有client相关配置信息:主机Id.

简单搭建PXE无人值守自动化安装系统

PXE环境概述 在公司进行批量部署服务器安装方法: Kickstart (PXE+DHCP+TFTP+HTTP) 或 Cobbler 批量装机软件介绍 Kickstart和Cobbler. ??Kickstart是一种无人值守的安装方式.它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件.如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适的参数,就采用所找到的参数:如果没有找到合适的参数,便会弹出对话框让安装者手工填写

自动化监控系统(三) 搭建xadmin做网站后台

Django有个自带的admin后台,不过界面不怎么好看,这里我用xadmin 我的python版本是3.5,可以使用支持py3的xadmin:https://github.com/sshwsfc/xadmin xadmin部署步骤: 1.把xadmin整个目录拷贝到项目里面 2.需要安装的依赖包: django~=1.9.0django-crispy-forms~=1.6.0django-reversion~=2.0.0django-formtools==1.0future==0.15.2ht

DHCP+TFTP+HTTP+kickstart实现PXE自动化部署系统Centos

前提:对DHCP,tftp-server,httpd有一定了结,本文将略过对服务的讲解和安装过程,主要讲通过这三个服务来实现PXE服务器的搭建过程. 准备工作: 安装软件包: 安装制作ks.cfg文件工具(图形界面下):yum-y system-config-kickstart 安装服务:yum -y installdchp tftp-server httpd 安装syslinux:yum -yinstall syslinux 或者使用下面的安装方法一次性全部安装: yum -y install

【前端福利】用grunt搭建自动化的web前端开发环境-完整教程

jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发人员,如果你现在还不知道grunt或者听说过.但是不会熟练使用grunt,那你就真的真的真的out了(三个"真的"重复,表示重点).至于grunt的作用,这里不详细说了,总之你如果做web前端开发,你一定要用grunt.还有一点,它完全免费,没有盗版.既强大又免费的东西,为何不用? 当然了,你如果你能找到更好的替代grunt的其他工

用grunt搭建自动化的web前端开发环境

用grunt搭建自动化的web前端开发环境 jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发人员,如果你现在还不知道grunt或者听说过.但是不会熟练使用grunt,那你就真的真的真的out了(三个“真的”重复,表示重点).至于grunt的作用,这里不详细说了,总之你如果做web前端开发,你一定要用grunt.还有一点,它完全免费,没有盗版.既强大又免费的东西,为何不用? 当然了,你如果你