Que hacer cuando se le solicita una lista actualizada de equipos de red, y no se cuenta con un sistema de inventario, o la lista de equipos no esta actualizada. Este segmento trata de abonar un poco a la solución de este tipo de problemas. Encontré un script que puede ser modificado a la conveniencia, en base a los datos solicitados.
#!/bin/sh
#
# inventory.sh – este escript extrae informacion de
# enrutadores, switches (Name, Type, IOS version)
#
#
# Set behaviour
public="public"
workingdir="/home/juan/cisco"
#
LOG=$workingdir/resultado.csv
infile=$workingdir/entrada.txt
snmp="/usr/local/bin/snmpget -v1 -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
El escript para extraer inventario de hardware, extrae la información del equipo directamente mediante el uso de snmp. Esto asegura que la información obtenida se encuentre actualizada, sin embargo como puede observarse es necesario que todos los equipos escaneados tengan configurado snmp, con la misma string community.
De igual manera también es necesario tener instalado net-snmp en el equipo que se ejecuta el script, es posible que tenga que modificar la ruta donde se encuentra el ejecutable de snmpget en mi caso, solamente escribí el comando sin especificar la ruta, al igual que también sera necesario modificar el archivo de trabajo y la comunidad que se utiliza en snmp, en el ejemplo funciona con public, lo cual no es recomendable
Para que este escript funcione también es necesario crear un archivo de entrada que contendrá los nombres o direcciones ip de todos los dispositivos a escanear, el script espera encontrar este archivo en el mismo directorio de trabajo.