#!/bin/bash
########################################################################
#Recuperation des addresse mac dans un fichier au format decimal et hexa
snmpwalk -v 2c -c public -OX xxx.xxx.xxx.xxx 1.3.6.1.2.1.17.4.3.1.1 > /scriptsOID/mac1016.tmp
#creation du fichier mac1016.dat contenant la relation mac hex / mac deci
while read line;
do echo -e ${line:29} >> /scriptsOID/mac1016b.tmp
done < /scriptsOID/mac1016.tmp;
awk -F " " '{ print 1,ドル4ドル":"5ドル":"6ドル":"7ドル":"8ドル":"9ドル }' /scriptsOID/mac1016b.tmp >> /scriptsOID/mac1016.dat
#recuperation du portbridge
snmpwalk -v 2c -c public -Of xxx.xxx.xxx.xxx .1.3.6.1.2.1.17.4.3.1.2 > /scriptsOID/bridge.tmp
#creation du fichier bridge.dat
while read line;
do echo -e ${line:44} >> /scriptsOID/bridgeb.tmp
done < /scriptsOID/bridge.tmp
awk -F " " '{ print 1,ドル4ドル }' /scriptsOID/bridgeb.tmp >> /scriptsOID/bridge.dat
#recuperation du portID**
snmpwalk -v 2c -c public -Of xxx.xxx.xxx.xxx .1.3.6.1.2.1.17.1.4.1.2 > /scriptsOID/portid.tmp
#creation du fichier portid.dat
while read line;
do echo -e ${line:44} >> /scriptsOID/portidb.tmp
done < /scriptsOID/portid.tmp
awk -F " " '{ print 4,ドル1ドル }' /scriptsOID/portidb.tmp >> /scriptsOID/portid.dat
#recuperation du port
snmpwalk -v 2c -c public -Of xxx.xxx.xxx.xxx .1.3.6.1.2.1.31.1.1.1.1 >> port.tmp
#creation du fichier port.dat
while read line;
do echo -e ${line:77} >> /scriptsOID/portb.tmp
done < /scriptsOID/port.tmp
awk -F " " '{ print 1,ドル4ドル }' /scriptsOID/portb.tmp >> /scriptsOID/port.dat
#jointure entre les fichier .dat pour former un fichier unique servant de base de donnee
#jointure de mac1016.dat et port bridge.dat pour former mac16bridge.dat
join -1 1 -2 1 ./mac1016.dat <(fgrep -f <(cut -d ' ' -f 1 ./mac1016.dat) bridge.dat)> mac16bridge.dat
awk -F " " '{ if (3ドル<49) print 3,ドル 2ドル} ' ./mac16bridge.dat > ./mac16bridge.tmp
sort mac16bridge.tmp > mac.sort
#jointure de portid.dat et port.dat pour former portname.dat
join -1 1 -2 1 ./portid.dat <(fgrep -f <(cut -d ' ' -f 1 ./portid.dat) port.dat)> portname.dat
cut -d ' ' -f 2,3 ./portname.dat >portname.tmp
awk -F " " '{ if (1ドル<49) print 1,ドル 2ドル} ' ./portname.tmp > ./portname.tmp2
sort ./portname.tmp2 > ./portname.sort
#jointure de mac16bridge.dat et portname.dat pour former le fichier final BD.dat
join -1 1 -2 1 ./mac.sort <(fgrep -f <(cut -d ' ' -f 1 ./mac.sort) portname.sort)> BD.dat
Pour le moment mon scripts ressemble à ça il sert a récupéré en SNMP les info d'un switch et à établir un tableau sous la forme :
Adresse mac port ip du switch
Mais la jointure me pose toujours problème.
Mon scripts n'est pas très beau mais c'est plutôt nouveau tout ça pour moi .
# Bon autant vous montrez le complet ça vous aidera peut etre
Posté par benofdark . En réponse au message Utilisation de awk pour la jointure de 2 fichiers. Évalué à 0.
Pour le moment mon scripts ressemble à ça il sert a récupéré en SNMP les info d'un switch et à établir un tableau sous la forme :
Adresse mac port ip du switch
Mais la jointure me pose toujours problème.
Mon scripts n'est pas très beau mais c'est plutôt nouveau tout ça pour moi .