Solution de remontée des connections aux switchs
Par pepin le jeudi, février 20 2014, 15:43 - HP - Lien permanent
Nous paramétrons les switchs (H3C) pour envoyer les trappes à notre serveur de supervision :
snmp-agent target-host trap address udp-domain 10.2.0.40 params securityname PRIVCOMMUNITY
Nos paramétrons le démon snmptrapd comme suit (fichier /etc/snmp/snmptrapd.conf) :
disableAuthorization yes
authCommunity log,execute PRIVCOMMUNITY
traphandle IF-MIB::linkUp /usr/local/bin/snmp-link-up-handler
Voici le contenu de la commande snmp-link-up-handler :
#!/usr/bin/perl -w while (<>) { chomp; if (/SNMP-COMMUNITY-MIB::snmpTrapAddress.0/) { $ip=$_; $ip=~ s/.* //; } if (/IF-MIB::ifIndex/) { $port=$_; $port=~ s/.* //; } } system "/usr/local/bin/getmacbyswitchport $ip $port";
Quant à la commande getmacbyswitchport, elle interroge le switch d'ip ip pour avoir la liste des adresses mac connectées au port port, et envoie le contenu dans une base de données.
#!/bin/bash database=/var/lib/h3cinventory/inventory.sqlite date=`date` macadresses=`/usr/local/bin/h3cquery.exp $1 | grep -i "1/0/$2\s" | awk '!x[$1]++ {print $1}'` for f in $macadresses do echo "delete from inventory where macadress='$f';" echo "insert into inventory values ('$f','$1',$2,'$date');" done | sqlite $database
la commande h3cquery.exp est un script expect qui se connecte en ssh au switch passé en argument et fait un "dis mac-address".
la base de données à comme structure l'unique table définie comme suit :
create table inventory (macadress text,switch text, port integer, lastseen text);