命令行工具--LLDP
一、场景引入
有的时候,我们需要知道服务器上联交换机的那个口,想远程查看一下,但是又不想去机房一根一根线的查找, 对号入座。那么我们该怎么办呢?
二、什么是LLDP?
LLDP是Link Layer Discovery Protocol 链路层发现协议的简称,几乎所有的以太网交换机都内置了这个功能。
在我们日常debug过程中,我们需要知道物理网卡喝交换机接口对应的信息的时候,我们就可以在服务器上直接查看,而不需要去机房现场查看。很nice。
三、在CentOS上安装LLDP
操作系统环境: CentOS 7.6
软件包: lldpad、 lldpad-libs
1、安装rpm 包
# 仓库配置部分省略,自行配置
# 安装
yum install lldpad -y
2、首先要启动lldpad 服务
systemctl start lldpad
或者 lldpad -d
# 加入到开机自启里面(可选)
systemctl enable lldpad
3、然后执行如下脚本
for i in `ls /sys/class/net/ | grep eth` ; <---注意网卡名字过滤规则,你的服务器是否是"eth"!
do echo "enabling lldp for interface: $i" ;
lldptool set-lldp -i $i adminStatus=rxtx ;
lldptool -T -i $i -V sysName enableTx=yes;
lldptool -T -i $i -V portDesc enableTx=yes ;
lldptool -T -i $i -V sysDesc enableTx=yes;
lldptool -T -i $i -V sysCap enableTx=yes;
lldptool -T -i $i -V mngAddr enableTx=yes;
done
4、设置服务器的lldp 管理地址
lldptool -T -i eth2 -V mngAddr ipv4=192.168.24.185
5、重新启动lldpad
systemctl restart lldpad
或者
lldpad -d
6、查看服务器端口,对应交换机上端口
lldptool -t -n -i eth0
四、命令详解
lldptool set-lldp -i $i adminStatus=rxtx 【配置LLDP模式】
TxRx:既发送也接收LLDP报文。
Tx:只发送不接收LLDP报文。
Rx:只接收不发送LLDP报文。
Disable:既不发送也不接收LLDP报文。
lldptool -T -i $i -V sysName enableTx=yes; 【启用系统名称标识符】
lldptool -T -i $i -V portDesc enableTx=yes ; 【启用端口描述标识符】
lldptool -T -i $i -V sysDesc enableTx=yes; 【启用系统描述标识符】
TLV:(Type/Length/Value)
portDesc : Port Description TLV
sysName : System Name TLV
sysDesc : System Description TLV
####################其他命令
仅查看端口信息:lldptool -t -n -i eth1 -V portDesc (结果如下图)
$ lldptool -t -n -i eth1 -V portDesc
Port Description TLV
ge-0/0/33.0
五、脚本
#!/bin/bash
# install lldpad
yum install lldpad -y
# enable all interfaces lldp
for i in `ls /sys/class/net/ | grep eth` ;
do echo "enabling lldp for interface: $i" ;
lldptool set-lldp -i $i adminStatus=rxtx ;
lldptool -T -i $i -V sysName enableTx=yes;
lldptool -T -i $i -V portDesc enableTx=yes ;
lldptool -T -i $i -V sysDesc enableTx=yes;
lldptool -T -i $i -V sysCap enableTx=yes;
lldptool -T -i $i -V mngAddr enableTx=yes;
done
# get eth0 and eth3.1124 ip address
eth0=$(ip a |grep eth3.1124|grep inet|awk -F '/' '{ print $1 }'|awk -F ' ' '{print $2}')
eth3=$(ip a |grep eth0|grep inet|awk -F '/' '{ print $1 }'|awk -F ' ' '{print $2}')
# set mgmt ip address
lldptool -T -i eth0 -V mngAddr ipv4=$eth0
lldptool -T -i eth3 -V mngAddr ipv4=$eth1
# restart service
systemctl restart lldpad