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

本文详细介绍了如何在CentOS7上通过源码安装lldpd和lldpad,用于查询交换机端口信息。首先,介绍了在RHEL7上安装lldpd的步骤,包括下载源码、编译和安装。然后,提供了使用lldpd和lldpad查询交换机端口的脚本示例,展示如何获取设备名称、MAC地址、接口名和VLAN等信息。
摘要由CSDN通过智能技术生成

    关于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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在CentOS 7上进行源码安装Zsh,可以按照以下步骤进行操作: 1. 首先,确保已安装所需的依赖项。您需要安装GCC编译器和make工具。可以使用以下命令进行安装: ``` yum install -y gcc make ``` 2. 下载Zsh的源码包。可以使用wget命令从SourceForge下载最新的Zsh源码包,命令如下: ``` wget -O zsh.tar.xz https://sourceforge.net/projects/zsh/files/latest/download --no-check-certificate ``` 3. 解压源码包。使用以下命令将源码包解压到当前目录: ``` tar -xf zsh.tar.xz ``` 4. 进入解压后的目录。使用以下命令进入Zsh源码目录: ``` cd zsh-* ``` 5. 配置和编译Zsh。执行以下命令来配置和编译Zsh: ``` ./configure make ``` 6. 安装Zsh。使用以下命令来安装Zsh: ``` make install ``` 完成这些步骤后,Zsh将成功安装到您的CentOS 7系统中。您可以通过运行`zsh`命令来启动Zsh。如果您想将Zsh设置为默认的Shell,可以使用以下命令: ``` chsh -s /usr/local/bin/zsh ``` 请注意,这是一种通过源码安装Zsh的方法。如果您更喜欢使用包管理器进行安装,可以使用`yum`命令安装Zsh: ``` yum install -y zsh ``` 但这将安装的是预编译的Zsh版本,而不是通过源码进行编译安装的版本。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [centos普通用户安装zsh](https://blog.csdn.net/shitou_12/article/details/127900917)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Centos7-Linux安装zsh和oh-my-zsh(内含国内安装方法)](https://blog.csdn.net/qimowei/article/details/119517167)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值