Git Product home page Git Product logo

netconf-lnu's Introduction

NETCONF scripts for LNU Campus Network

BRAS 设备 IPoE 认证用户 IPv6 地址溯源程序

一、工作原理

本程序通过 NETCONF 协议获得 BRAS 设备 IPoE 认证用户 MAC、IPv4、IPv6 地址信息,并发送到 syslog 进行记录。可以通过 cron 每十分钟定时执行本程序,记录用户地址信息,以供事后溯源。

本程序在 H3C SR8808-X 以及华为 ME60 上进行了测试。华为 ME60 的 V800R013C00SPC100 版本软件 NETCONF 接口存在问题,无法正常获得 IPv6 地址。

二、开发环境

本项目使用了 PDM 设置开发环境,src/netconf_lnu/mytest.py 中的函数可以作为测试使用,具体命令类似如下:

pdm run netconf-lnu -c config/config.ini -t dispatch_test

其中 config/config.ini 是配置文件,可以参考 config/config.ini.example 来编写。

src/netconf_lnu/mytest.py 程序中的 download_schema 函数,能够下载网络设备的 YANG 文件,用户可以参考该测试函数编写自己的下载程序。

对于下载后的 YANG 文件,可以利用已经安装的 pyang 程序来浏览,命令如下:

pdm run pyang -f tree schema/huawei-bras-user-manage.yang

虽然可以从设备上获得 YANG 文件,但还是建议在 Netconf Central 查找并浏览。

对于程序基本功能可以通过下面命令进行测试:

pdm run netconf-lnu -c config/config.ini

三、打包部署

本项目可以通过 pdm build 命令可以打包,方便修改后部署。

项目已经在 PyPI 上发布,可以直接通过 pipx 安装,以 Debian 类系统为例,可以以 root 用户执行如下命令安装 pipx:

apt install pipx
cat >> ~/.bashrc << EOF

# For pipx
export PIPX_HOME=/opt/pipx
export PIPX_BIN_DIR=/usr/local/bin
EOF

然后重新登陆系统并安装 netconf-lnu

pipx install netconf-lnu

安装后需要建立配置文件 /etc/netconf-lnu/config.ini 并运行 netconf-lnu 命令测试。

测试无误后,可以建立 cron 配置文件 /etc/cron.d/netconf-lnu,每20分钟运行程序一次,其内容如下:

*/10 * * * * root /usr/local/bin/netconf-lnu

netconf-lnu's People

Contributors

mengbo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.