• 命令行工具--LLDP


    命令行工具--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
    
  • 相关阅读:
    .NET生成CSV文件
    Codeforces Round #552 (Div. 3) A题
    位运算介绍
    Codeforces Round #552 (Div. 3) F题
    POJ—1321(棋盘问题)
    Codeforces Round #552 (Div. 3) C题
    Codeforces Round #553 (Div. 2) A题
    Codeforces Round #553 (Div. 2) C题
    Codeforces Round #553 (Div. 2) B题
    Codeforces Round #552 (Div. 3) D题
  • 原文地址:https://www.cnblogs.com/yanling-coder/p/11819952.html
Copyright © 2020-2023  润新知