/asname_huawei_bgp

Huawei - Monitoramento de BGP usando script externo para "pegar" o "nome dos ASN"

Primary LanguagePython

Huawei - Monitoramento de BGP

Monitoramento de BGP usando script externo para "pegar" o "nome dos ASN".

Material de apoio

Bash split string into array using 4 simple methods

JSONPath Online Evaluator - jsonpath.com

JSON Formatter

Bash For Loop Array: Iterate Through Array Values

remontti / Zabbix-Templates

LAÇOS OU LOOPS COM SHELL SCRIPT (FOR, WHILE E UNTIL)

30 Exemplos de Comando SED Com Regex

JavaScript Zabbix preprocessing cheat sheet, substitution samples

Bash - Parse snmpwalk output

Extracting specific data from SNMP

How to split a string into an array in Bash?

Unix / Linux - Shell Basic Operators

Dependências

apt install whois
cd /usr/lib/zabbix/externalscripts
chown zabbix. /usr/lib/zabbix/externalscripts/asname
chmod +x /usr/lib/zabbix/externalscripts/asname
nano asname

Script

#! /usr/bin/bash
alert(){
    echo -e "Tente algo como: ./asname <DEVICE_COMUNITY> <DEVICE_IP>\nOu no zabbix: asname[{\$SNMP_COMMUNITY}, {HOST.IP}]";
    exit 0;
}

if [ "$1" = "" ]; then alert; fi; 
if [ "$2" = "" ]; then alert; fi;

OID="1.3.6.1.4.1.2011.5.25.177.1.1.2.1";

as=($(snmpwalk -v 2c -c $1 $2 $OID.2 | sed 's/.*: //'));
snmpindexs=($(snmpwalk -v 2c -c $1 $2 $OID.2 | sed 's/ = .*//' | sed 's/iso.*.1.2.1.2.//'));
remoteaddress=($(snmpwalk -v 2c -c $1 $2 $OID.4 | sed 's/.*: //' | sed 's/"//' | sed 's/"//'));
states=($(snmpwalk -v 2c -c $1 $2 $OID.5 | sed 's/.*: //'));

echo "ASNAME|SNMPINDEX|REMOTEADD|STATE";

C=0;

for i in "${as[@]}"; do
    ASNAME=$(whois -h whois.cymru.com  AS$i | egrep -v "AS Name");
    echo "$ASNAME|${snmpindexs[$C]}|${remoteaddress[$C]}|${states[$C]}";
    let C=C+1;
done;

Pré-processamento - Zabbix

Esse script tem o CSV como formato de saida de dados. Por isso vamos usar o pre-processamento do Zabbix para converte-lo para um formato Json.

Zabbix - Pre-processamento

  1. Nome: "CSV to JSON".
  2. Parâmetros: "|" (pipe).
    1. Esse sinal é o que delimita as informações do nosso CSV. Geralmente usamos a vírgula para isso. Mas como o 'nome do asn' pode conter virgulas tambem, optei por separar as informações com o "|" (pipe).

Template - Zabbix 5.4