A falta da descrição das interfaces em roteadores Linux foi algo que sempre me incomodou. Ter que editar cada gráfico no cacti para que o gráfico tivesse o nome correto era trabalhoso.
Um dia desses esbarrei num script que extende o snmpd para que ele passe a ter o OID ifAlias e assim termos o nome das interfaces disponíveis para qualquer ferramenta que utilize o protocolo SNMP. O caminho para o script deverá ser /usr/local/lib/ifAlias. O script tinha alguns bugs, e após as correções ficou assim:
[bash] #!/bin/bash # ifAlias for Debian GNU/Linux # (c) 2010-2013, Tom Laermans, www.observium.org # Small fixes by: Renato Ornelas <renato_at_openx.com.br> # BASE='.1.3.6.1.2.1.31.1.1.1.18' REQ=$2 ID=$(echo ${REQ##${BASE}.} |cut -d: -f1) if [ "X${REQ}" = "X${BASE}" ]; then ID=0 fi if [ "$1" = "-n" ]; then # getnext INDEX=0 IFS=" " for INT in $(ip l|grep mtu) do PREVINDEX=$INDEX INDEX=$(echo $INT|cut -d: -f1) if [ $PREVINDEX == $ID ]; then INTERFACE=$(echo $INT| cut -d ":" -f 2 | sed 's/ //g' | cut -d@ -f1) ID=$INDEX break fi done else # get INTERFACE=$((ip l | grep "^${ID}: " | cut -d " " -f 2 | sed 's/://g' | cut -d@ -f1) 2> /dev/null) fi if [ "X$ID" = "X" ] || [ "X$ID" = "X0" ] || [ "X$ID" = "X-1" ]; then exit 0 fi if [ "$INTERFACE" ]; then INTERFACE=$((ip l | grep "^${ID}: " | cut -d " " -f 2 | sed 's/://g' | cut -d@ -f1) 2> /dev/null) fi echo ${BASE}.${ID} if [ "X${INTERFACE}" = "X" ]; then echo noSuchName exit 0 fi echo "string" echo $(grep "^# $INTERFACE:" /etc/network/interfaces|sed s/^# $INTERFACE: //) exit 0 [/bash]
Precimos instruir o snmpd a usar este novo script para caminhar pela arvore ifAlias. Basta adicionar a seguinte linha ao final do arquivo /etc/snmp/snmpd.conf:
[text] pass .1.3.6.1.2.1.31.1.1.1.18 /usr/local/lib/ifAlias [/text]
Para usar, precisaremos de adicionar a descrição da interface no arquivo /etc/network/interfaces, usando a sintaxe # INTERFACE: DESCRIÇÃO, como no exemplo abaixo:
[bash] # vlan10: DMZ auto vlan10 iface vlan10 inet static address XX.XX.XX.XX netmask 255.255.255.0 vlan_raw_device eth0 # vlan2: LAN auto vlan2 iface vlan2 inet static address XX.XX.XX.XX netmask 255.255.255.192 vlan_raw_device eth0 [/bash]
Agora basta recarregar a query no cacti (bolinha verde) para ver as descrições das interfaces:
Veja os posts com as verões compatíveis com: SuSE e Red Hat/CentOS.
Ideia Original: http://www.observium.org/wiki/IfAlias_descriptions_on_Debian/Ubuntu