Para los sistemas Linux basta con hacer:
snmpwalk -Os -v2c -c public ip_del_dispositivo > ip_del_dispositivo.walk
Es conveniente redirigir la salida a un fichero por la enorme cantidad de información que se recibe.
Como cosa curiosa he comprobado que obtengo más información si empleo un punto como OID. Suponía que snmpwalk sin OID devolvería todo el árbol completo ¿?.
snmpwalk -Os -v2c -c public ip_del_dispositivo . > ip_del_dispositivo.walk
Bajo Windows se puede emplear un equivalente mediante PHP. Una vez bajado y descomprimido en
C:\PHP
Hay que modificar el php.ini:
- Descomentar php_snmp.dll
- Descomentar php_sockets.dll
- Hacer extensión_dir=”c:\php\ext”
Añadir en variables de entorno de sistema el path: c:\php
Añadir en variables de entorno de sistema: mibdirs como c:\php\extras\mibs
En el Notepad creamos y guardamos como snmpwalk_report.php lo siguiente:
#!/usr/bin/php
<?php
$string = "public";
$host = "$argv[1]";
check_snmp($host);
spitinfo($host);
function check_snmp($box) //primero comprueba que el host tiene
//activo snmp
{
$string="public";
$infocheck = @snmpget("$box", "$string", "system.sysDescr.0");
if(! $infocheck)
{
die("SNMP no esta activo en el host: $box\n");
}
else
{
return $infocheck;
}
}
function spitinfo($host)//obtiene y muestra datos de snmp.
{
$string = "public";
$hostinfo = @snmpget("$host","$string","system.sysDescr.0");
list ($k)=array(split(" ", $hostinfo));
$os = $k[0];
$hostname = @snmpget("$host","$string","system.sysName.0");
$user = @snmpget("$host","$string","system.sysContact.0");
$location = @snmpget("$host","$string","system.sysLocation.0");
$macaddr = @snmpget("$host","$string","interfaces.ifTable.ifEntry.ifPhysAddress.2");
$ethstatus = @snmpget("$host","$string","interfaces.ifTable.ifEntry.ifOperStatus.2");
$ipfwd = @snmpget("$host","$string","ip.ipForwarding.0");
$ipaddr = @gethostbyname("$host");
$info=array("Hostname:"=>"$hostname","Contact:"=>"$user",
"Location:"=>"$location","OS:"=>"$os","MAC Address:"=>
"$macaddr","IP Address:"=>"$ipaddr","Network Status:"=>
"$ethstatus",
"Forwarding:"=>"$ipfwd");
echo "\nTCP Port Summary\n";
tabdata($info);
print "\nTCP Port Summary\n";
snmp_portscan($hostname);
echo "\nOtra forma\n";
$a = snmpwalk("127.0.0.1", "public", "system");
for ($i=0; $i
{
if($label){
print "$label\t";
}else{
print "Not Available\t";
}
if($value){
print "$value\n";
}else{
print "Not Available\n";
}
}
}
function snmp_portscan($target)
{
$listen_ports=snmpwalk("$target","public",".1.3.6.1.2.1.6.13.1.3.0.0.0.0");
foreach($listen_ports as $key=>$value)
{
print "TCP Port $value (" . getservbyport($value, 'tcp') . ") listening \n";
}
}?>
Solo hay que hacer en linea de comandos >php snmpwalk_report.php ip_remoto
En la salida hay varios ejemplos de cómo extraer la información, algunos redundantes, pero sirven como ejemplo y modelo.
Como programas gratuitos podemos usar los
Getif en http://www.wtcs.org/snmp4tpc/getif.htm
Y el impagable
Dude en http://wiki.mikrotik.com/wiki/Dude_windows_installation