Ho creato un simpatico script che utilizza il protocollo SNMP per estrarre informazioni utili da un elenco di router. Per impostazione predefinita, lo script memorizza i dati in formato CSV in modo che lo si potrà facilmente importare in un foglio di calcolo per l’analisi.
#!/bin/sh # # inventory.sh -- a script to extract valuable information # from a list of routers. (Name, Type, IOS version) # # # Set behaviour public="home" workingdir="/home/thomasmilian/temp" # LOG=$workingdir/RESULT.csv infile=$workingdir/RTR_LIST snmp="/usr/bin/snmpget -v 2c -c $public" # while read device do $snmp $device sysName.0 > /dev/null if [ "$?" = "0" ] ; then rtr=`$snmp $device .1.3.6.1.4.1.9.2.1.3.0 | cut -f2 -d\" ` type2=`$snmp $device .1.3.6.1.4.1.9.9.25.1.1.1.2.3 | cut -f2 -d$ ` ios=`$snmp $device .1.3.6.1.4.1.9.9.25.1.1.1.2.5 | cut -f2 -d$ ` prot=`$snmp $device .1.3.6.1.4.1.9.9.25.1.1.1.2.4 | cut -f2 -d$ ` echo "$device, $rtr, $type2, $ios, $prot" >> $LOG fi done < $infile
Lo script estrae informazioni hardware e sulla versione IOS direttamente dai router tramite SNMP. Questo assicura che i dati siano aggiornati. Per impostazione predefinita, lo script cattura il nome del dispositivo, il tipo, la versione dell’ IOS e le sue caratteristiche successivamente memorizza queste informazioni raccolte in un file di formato CSV chiamato Result.csv.Questo script richiede che sia installato sulla macchina di log NET-SNMP per raccogliere le informazioni via SNMP. È possibile utilizzare un diverso pacchetto SNMP, se si preferisce, ma poi sarà necessario modificare la sintassi in modo appropriato. Lo script si aspetta di trovare snmpget eseguibile nella directory /usr/bin. Anche in questo caso, se si mantiene questo file in una posizione diversa, sarà necessario definire la posizione corretta nella variabile snmp.Prima di eseguirlo in rete, è necessario modificare due variabili. La prima è la variabile pubblic. Questo valore deve contenere la stringa di sola lettura della comunità SNMP. La seconda variabile che sarà necessaria impostare è la workingdir, che deve contenere il nome della directory che si desidera eseguire lo script.Infine, sarà necessario creare un file chiamato RTR_LIST che contiene i nomi di tutti i router, con un nome su ogni riga. Lo script si aspetta di trovare questo file nella directory di lavoro.