CentOS7源码安装 lldpd 并附查询脚本

news2025/1/16 13:45:05

文章目录

        • 源码安装 lldpd
        • 查询交换机端口的 lldpd 脚本
        • 查询交换机端口的 lldpad 脚本

    关于CentOS7上配置LLDP的文章,网络上已经很多了。实现交换机端口的抓取,众多周知的有两种工具,一种是lldpad,另一种是lldpd。

源码安装 lldpd

    在 Fedora 和 RHEL 8,使用 dnf install lldpd 命令安装 lldpd。对于较旧的发行版,如 RHEL 7,需要在输入 yum install lldpd 命令之前安装 epel-release 包。
    安装 lldpd 包后,可以通过 /etc/sysconfig/lldpd 文件更改配置。
    首先,打开下载页面 https://lldpd.github.io/,单击最新版本进行源码包下载。
在这里插入图片描述
    按照命令安装:

$ tar zxvf lldpd-1.0.16.tar.gz
$ cd lldpd-1.0.16
$ mkdir build
$ cd build
$ ../configure
checking for a BSD-compatible install... /bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /bin/mkdir -p
checking for gawk... gawk
...
------------------ Summary ------------------
 lldpd version 1.0.16
  OS.............: Linux
  Prefix.........: /usr/local
  C Compiler.....: gcc -std=gnu11  -fdiagnostics-show-option -fdiagnostics-color=auto -pipe -Wall -W -Wextra -Wformat -Wformat-security -Wfatal-errors -Winline -Wpointer-arith -fno-omit-frame-pointer -Wno-cast-align -Wno-unused-parameter -Wno-missing-field-initializers -Wno-sign-compare -fstack-protector -fstack-protector-all -fstack-protector-strong -fstack-clash-protection  -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -g -O2 
  Linker.........: /bin/ld -m elf_x86_64  -Wl,-z,relro -Wl,-z,now   
  Libevent.......: embedded
  Readline.......: no

 Optional features:
  SNMP support...: no
  CDP............: yes
  FDP............: yes
  EDP............: yes
  SONMP..........: yes
  LLDPMED........: yes
  DOT1...........: yes
  DOT3...........: yes
  CUSTOM.........: yes
  XML output.....: no
  Oldies support.: no
  seccomp........: no
  libbsd.........: no

 Privilege separation:
  Enabled........: yes
  User/group.....: _lldpd/_lldpd
  Chroot.........: /usr/local/var/run/lldpd

 Instrumentation (for devs only):
  Sanitizers.....: none
  Coverage.......: no
------------- Compiler version --------------
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-------------- Linker version ---------------
GNU ld version 2.27-34.base.el7
Copyright (C) 2016 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
---------------------------------------------

Check the above options and compile with:
 make

    如果一切顺利,执行 make 命令:

$ make
  CC     strlcpy.lo
  CCLD   libcompat.la
  CC     log.lo
...
make[1]: Leaving directory `/home/bernat/src/lldpd-1.0.16'

    接着执行 make install 完成安装:

$ make install
Making install in src/compat
...
make[1]: Leaving directory `/home/test/lldpd-1.0.16/build'

    最后,执行一系列系统设置,这些步骤很琐碎,但很重要。

  • 确保在系统中正确注册了 liblldpctl 库。在 make install 的输出中有 liblldpctl 库的安装过程:
    在这里插入图片描述
    在Linux上,使用 ldconfig 命令重载库,使系统可以马上使用。
  • 创建 _lldpd 用户和 _ldpd 组,满足特权分离(提高安全性)的需要。
$ useradd _lldpd
  • 创建空目录 /usr/local/var/run/lldpd,不然服务无法启动哦。

查询交换机端口的 lldpd 脚本

    脚本如下:

#!/bin/bash

function show_info(){
    local se_dev=$1
    local ld_tool="lldpcli show neighbors ports $1 details"
    local sw_name=`$ld_tool |grep 'SysName'|awk '{print $NF}'` 
    local sw_mac=`$ld_tool |grep 'mac'|awk '{print $NF}'` 
    local sw_ifname=`$ld_tool |grep 'ifname'|awk '{print $NF}'` 
    local sw_vlan=`$ld_tool |grep 'VLAN'|awk '{print $2}'|sed 's/,//'` 

    echo "se_dev: $se_dev
sw_name: $sw_name
sw_mac: $sw_mac
sw_ifname: $sw_ifname
sw_vlan: $sw_vlan
"
}

function get_info(){
#set dev

#查询所有网口
#for dev in `ls /sys/class/net/ |egrep 'e|p'`

#查询当前up的端口
for dev in `ip a |grep 'state UP' |awk -F ': ' '{print $2}'`
do 
    show_info $dev
done
}

function main() {
  get_info
}
main "$@"

    执行结果:
在这里插入图片描述

查询交换机端口的 lldpad 脚本

    如果使用的是 lldpad,不是 lldpd,可以使用以下脚本进行查询:

#!/bin/bash

function set_dev(){
#set dev
for dev in `ls /sys/class/net/ |egrep 'e|p'`
do
    echo "enabling lldp for interface: $dev"
    lldptool set-lldp -i $dev adminStatus=rxtx
    lldptool -T -i $dev -V sysName enableTx=yes
    lldptool -T -i $dev -V portDesc enableTx=yes
    lldptool -T -i $dev -V sysDesc enableTx=yes
    lldptool -T -i $dev -V mngAddr enableTx=yes
done
}

function ins_lldp(){
#installation lldpad and lldptool
yum install -y lldpad & >/dev/null

#Start service
systemctl start lldpad.service

systemctl enable lldpad.service
set_dev
}

#show SW info
function show_info() {
    local se_dev=$1
    local ld_tool="lldptool -t -n -i $se_dev"
    local sw_mac=`$ld_tool |grep 'MAC:' |awk -F ': ' '{print $NF}'`
    local sw_If=`$ld_tool |grep 'Ifname:' |awk -F ': ' '{print $NF}'`
    local sw_name=`$ld_tool |grep 'System Name TLV' -A1 |tail -n1 |sed 's/\t//g'`
    local sw_ip=`$ld_tool |grep 'Management Address TLV' -A1 |tail -n1 |awk -F ': ' '{print $NF}' |sed 's/\t//g'`
    echo "se_dev: $se_dev
sw_name: $sw_name
sw_ip: $sw_ip
sw_mac: $sw_mac
sw_If: $sw_If
"
}

function get_info() {
set_dev >/dev/null 2>&1
sleep 3
for up_dev in `ip a |grep 'state UP' |awk -F ': ' '{print $2}'`
do
    show_info $up_dev
done
}

function check_lldp() {
if [[ -n `lldptool -p` ]]; then
    echo "lldp install success"
fi
}

function main() {
if [[ $1 == "install" ]]; then
    if [[ -f "/var/lib/lldpad/lldpad.conf" ]]; then
        echo "lldp installed,exit!"
    else
        ins_lldp
        check_lldp
    fi
elif [[ $1 == "get" ]]; then
    get_info
else
    echo "install:install lldp
get:get lldp info"
fi
}
main "$@"

    结果类似:
在这里插入图片描述

    脚本来自文章 https://blog.csdn.net/BK_sys/article/details/88554593

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/10282.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

get_post (攻防世界)(简单php)

前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 题目描述 进入网址 解题工具: 需要使用hackerbar (也可以用burpsuite) 问题解析: 科普时间又到 GET方法 用来向服务器请求数据。 是常见的HTTP方法之一。 查询字符是在URL中发送的: /…

led台灯哪个牌子质量好?2022最新的台灯牌子排名

众所周知,现在绝大部分台灯都是使用led灯珠作为发光源,led台灯作为主流的选择,在光线舒适度、光线调控性、台灯售价、显色与防护、节能环保等方面都是非常出色的,远超以前的传统白炽灯。那么现在市面上led台灯这么多,选…

甬矽电子在科创板上市:市值达到122亿元,王顺波为实际控制人

11月16日,甬矽电子(宁波)股份有限公司(下称“甬矽电子”,SH:688362)在科创板上市。本次在科创板上市,甬矽电子发行6000万股,发行价格为18.54元/股,募资总额为11.24亿元。…

java单例模式

单例设计模式:Spring中的Bean默认都是单例的。 概念 全世界就只要一个---在整个java程序中,只有这个类的一个实例 比如Student a new Student(); 就是Student类只创建这一个实例,只能有这一个对象存在 主要解决:一个全局使用的类频繁地创…

人工蜂群优化及其在资源管理中的应用(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

单钩点弹珠/片经验总结

开锁的方向:不要管主驾驶室在车子的左边还是右边,记住朝车头开启就可以。 开锁技巧:我们将HU101工具插入锁孔以后,摆好姿势,先拨动撬杆试探性的去点击弹片,一般我们会发现锁芯里面的弹片主要是下面一些排列…

Mysql系列三:Innodb MVCC版本控制

文章目录一、Innodb MVCC版本控制1、什么是MVCC版本控制?2、Innodb MVCC 核心3、事物版本号、隐藏列、undo log日志的协调工作机制4、Read view5、举例讲解MVCC流程6、InnoDB 引擎不同隔离级别MVCC的区别7、MVCC是否解决了幻读的问题一、Innodb MVCC版本控制 1、什…

项目实战 Java读取Excel数据

项目实战 Java读取Excel数据前言实现步骤导入POI依赖示例Excel表结构编写读取Excel工具类实现思路读取Excel数据工具类实现代码取出从excel中获取的数据,并插入到数据库中总结如果博主的文章对您有所帮助,可以评论、点赞、收藏,支持一下博主!…

jQuery复习

jQuery:是一个js函数库,口号写少 做多 write less do more 封装简化DOM操作(增删改查)/ajax 为什么使用:强大的选择器:方便快速查找DOM元素 隐式遍历:一次监听多个 读写合一:读数据&…

DEFORMABLE DETR学习笔记

DEFORMABLE DETR学习笔记 DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION ABSTRACT DETR最近被提出,以消除在目标检测中需要许多手工设计的组件,同时展示良好的性能。但由于Transformer注意模块在处理图像特征映射时的局…

基于51单片机驱动A4988实现步进电机逆时针转动

基于51单片机驱动A4988实现步进电机逆时针转动一、简介二、接线典型接线图实际接线三、部分代码引脚定义定时器初始化主函数四、实验现象五、注意事项一、简介 A4988 是一款完全的微步电动机驱动器,带有内置转换器,易于操作。该产 品可在全、半、1/4、1…

Synchronized 与 Lock 的使用

Synchronized的使用 以卖票为例 //基本的卖票例子/*真正的多线程开发,公司中的开发,降低耦合性线程就是一个单独的资源类,没有任何附属的操作1.属性、方法*/ public class SaleTicketDemo01 {public static void main(String[] args) {//多个线程操作同…

python 可视化解释模型

1. 自定义DataSet MakeDataset.py 首先准备好一个数据集文件,这里以mydata文件夹存放图片数据, 实现自定义DataSet class MyDataset(Dataset):def __init__(self,resize):super(MyDataset,self).__init__()self.resize resizedef __len__(self):retur…

【软件分析第13讲-学习笔记】符号执行 Symbolic Execution

文章目录前言正文符号执行基于霍尔逻辑的符号执行谓词转换计算最弱前置条件动态符号执行符号执行:进一步探究小结参考文献前言 创作开始时间:2022年11月16日18:46:31 如题,学习一下符号执行 Symbolic Execution的相关知识。参考&#xff1a…

计算机毕业设计jsp家校互动系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 家校互动系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用jav…

Linux用户操作(22.9.21)

学习目标: 用户账号管理Linux用户操作Linux用户组操作(一)用户账号管理 1、用户与用户组文件 在Linux系统当中,默认情况下所有用户信息保存在 /etc/passwd文件内,用户密码信息保存在/etc/shadow文件内;所…

43、Spring AMQP TopicExchange

1、TopicExchange 2、案例 3、通过配置类实现 1、配置TopicConfig 2、添加Listener 3、测试结果 4、通过注解实现 1、配置Linstener 2、测试结果 5、总结分析 学到这里,关于RabbitMQ的五种消息模型就结束了。 1、第一种消息模型:单个队列&#xff0c…

相机模型总结

目录相机模型前言1. pinhole 针孔模型2. Omnidirectional Camera Model 全向相机模型2.1 Unified model for catadioptric cameras 反射式相机统一模型2.2 Extended Unified model for catadioptric cameras (EUCM)2.3 Omnidirectional Camera Model By Scaramuzza畸变模型1. E…

linux篇【10】:进程信号

目录 一.信号入门 1.信号是操作系统内一个内置机制 2.前后台进程的几条命令与ctrlc 3.信号分类 4.信号产生是异步的 5.进程是如何记住这个信号 (3)存储方式:位图 二.signal ——对某信号设置自定义行为(捕捉)的函数 (1&a…

【Linux】进程间通信之消息队列

系列目录 进程间通信——共享内存 进程间通信——信号量 文章目录 一、概念 二、消息队列函数 1.msgget 2.magsnd 3.msgrcv 4.msgctl 三、掌握消息队列操作 一、概念 提供了一种从另一种进程发送一个数据块的方法。而且每个数据块都被认为含有一个类型,接…