initial
This commit is contained in:
commit
fd89a2e6b7
6
bandwidth.conf
Normal file
6
bandwidth.conf
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
ip=192.168.0.100
|
||||||
|
community=comcacti
|
||||||
|
version=2c
|
||||||
|
ifnames=(Gi1/0/22 Gi1/0/25 Gi1/0/27 Gi1/0/1 Gi1/0/2)
|
||||||
|
# refaire en JSON
|
||||||
|
# parser avec jq : https://stedolan.github.io/jq/
|
88
bandwidth.sh
Executable file
88
bandwidth.sh
Executable file
@ -0,0 +1,88 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Récupération des volumes de données passées par les interfaces
|
||||||
|
|
||||||
|
# Tableau associatif principal pour stocker uniquement les interfaces à monitorer de l'équipement :
|
||||||
|
# interfaces[nom] = index incrémental applicatif
|
||||||
|
# ex : interfaces["Gi1/0/1"] = 0
|
||||||
|
# Cet index sert à identifier l'interface choisie dans les tableaux suivants.
|
||||||
|
#
|
||||||
|
# Un tableau indexé classique par attribut monitoré est ensuite créé :
|
||||||
|
# index dans les OID de l'interface : ifOidIndexes[index] = ifOidIndex
|
||||||
|
# description de l'interface : ifDescriptions[index] = ifDescr
|
||||||
|
# vitesse de l'interface : ifSpeeds[index] = ifSpeed
|
||||||
|
# compteur d'octets in : ifBytesIN[index] = ifBytesIN
|
||||||
|
# compteur d'octets out : ifBytesOUT[index] = ifBytesOUT
|
||||||
|
|
||||||
|
# path de snmpwalk sur le système
|
||||||
|
snmpwalkPath=/usr/bin/snmpwalk
|
||||||
|
|
||||||
|
# OID de base des noms d'interface
|
||||||
|
oidIfnames=iso.3.6.1.2.1.31.1.1.1.1
|
||||||
|
# OID de base des descriptions d'interface
|
||||||
|
oidIfDescriptions=1.3.6.1.2.1.2.2.1.2
|
||||||
|
# OID de base des vitesses d'interface
|
||||||
|
oidIfSpeeds=1.3.6.1.2.1.2.2.1.5
|
||||||
|
# OID de base des compteurs octets IN
|
||||||
|
oidIfBytesIN=1.3.6.1.2.1.2.2.1.10
|
||||||
|
# OID de base des compteurs octets OUT
|
||||||
|
oidIfBytesOUT=1.3.6.1.2.1.2.2.1.16
|
||||||
|
|
||||||
|
|
||||||
|
# Test arguments entrés
|
||||||
|
if [[ $# -eq 0 ]]; then
|
||||||
|
echo 'Erreur de paramètre : le fichier de configuration de bandwith doit être passé'
|
||||||
|
echo 'Usage : bandwith.sh fichier_bandwith.conf'
|
||||||
|
exit 1
|
||||||
|
fi;
|
||||||
|
# Source de la configuration et tests fichiers
|
||||||
|
if [ ! -e $1 ]; then
|
||||||
|
echo 'Erreur : fichier '$1' non trouvé.'
|
||||||
|
exit 1
|
||||||
|
fi;
|
||||||
|
source $1;
|
||||||
|
|
||||||
|
|
||||||
|
# Index des interfaces de l'équipement : tableau associatif, exemple : interfaces["Gi1/0/6"] = 3
|
||||||
|
declare -A interfaces
|
||||||
|
for i in ${!ifnames[@]}; do
|
||||||
|
interfaces[${ifnames[$i]}]=$i
|
||||||
|
done
|
||||||
|
|
||||||
|
# Recherche des noms d'interface de l'équipement.
|
||||||
|
# Paramètres de snmpwalk
|
||||||
|
walkParams=' -v '$version' -c '$community' -Oq '$ip' '
|
||||||
|
# Récupération des interfaces de l'équipement avec leur nom
|
||||||
|
walkIfname=$($snmpwalkPath $walkParams $oidIfnames)
|
||||||
|
|
||||||
|
# Recherche dans tous ces noms d'interfaces, ceux demandés par le monitoring.
|
||||||
|
# Quand un nom est trouvé, on stocke son OID (index dans les OID) dans le tableau ifOidIndexes
|
||||||
|
# https://www.tldp.org/LDP/abs/html/string-manipulation.html
|
||||||
|
n=1 # compteur
|
||||||
|
oidIdx= # valeur courante oid d'interface
|
||||||
|
substringToRemove=$oidIfnames. # chaîne à retirer du résultat oidDeBase+'.'
|
||||||
|
for w in $walkIfname; do
|
||||||
|
# $walkInfame contient une suite de paires OID, nom. On ne retiendra donc que l'OID correspondant au nom, soit l'élément précédent
|
||||||
|
# on ne traite donc qu'un élément sur deux.
|
||||||
|
modulo=$(($n%2))
|
||||||
|
if [ $modulo == 0 ]
|
||||||
|
then
|
||||||
|
# le résultat courant du walk fait-il partie des clés du tableau des interfaces à monitorer ?
|
||||||
|
# si oui, on le stocke son indexOID dans le tableau ifOidIndexes
|
||||||
|
for i in ${!interfaces[@]}; do
|
||||||
|
nom=\"$i\"
|
||||||
|
if [ $nom = $w ]; then
|
||||||
|
index=${interfaces[$i]}
|
||||||
|
ifOidIdx=${oidIdx#$substringToRemove} # retrait de la chaine OID de base+'.' pour ne conserver que l'indexOID final
|
||||||
|
|
||||||
|
echo $ifOidIdx
|
||||||
|
# stocker cet oidIndex dans le tableau au bon index $index
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
oidIdx=$w
|
||||||
|
fi
|
||||||
|
|
||||||
|
n=$((n+1))
|
||||||
|
done
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user