Как получить байты, отправленные, полученные через SNMP - PullRequest
2 голосов
/ 28 ноября 2011

Я пишу Perl-скрипт, который должен извлекать байты, отправленные / полученные с удаленного хоста, короче говоря, я хочу отслеживать сетевой трафик. Обратите внимание, что хост может быть реальным хостом или чем-то другим, например, маршрутизатором / коммутатором и т. Д. Полученные мной данные будут храниться в базе данных Round Robin, но это не важно.

Первое, что я делаю, - это извлекаю интерфейсы хоста, а затем я должен искать использование трафика. Могу ли я сделать это с помощью OID? Есть ли таблица, в которой хранятся эти значения?

use Net::SNMP;
use Net::SNMP::Interfaces;

main:
{

my $session;
my $hostname = '192.168.x.x';
my $community = 'test';
my $error;
my $oid = '';
my $result;

# RETRIEVING INTERFACES
my $interfaces = Net::SNMP::Interfaces->new(Hostname => $hostname, Community => $community);
my  @ifnames = $interfaces->all_interfaces();
foreach $interface (@ifnames) {
    my $name = $interface->name();
    print "$name\n";    
}

# SNMP SESSION OPEN
($session, $error) = Net::SNMP->session(-hostname => $hostname, -community => $community);
print "SESSION: $session\n";
if (!defined $session) {
    print "SESSION ERROR: $error\n";
    $session->close();
    exit(1);
}

# SNMP GET_REQUEST  
$result = $session->get_request(-varbindlist => [ $oid ]);
if (!defined $result) {
    $error = $session->error();
    print "GET_REQUEST ERROR: $error\n";
    $session->close();
    exit(1);
}

$result = $result->{$oid};
print "GET_REQUEST: $result\n";

# SNMP SESSION CLOSE
$session->close();
exit(0);

}

1 Ответ

5 голосов
/ 29 ноября 2011

ifHCOutOctets OID 1.3.6.1.2.1.31.1.1.1.10 - исходящий трафик (байты)

ifHCInOctets OID 1.3.6.1.2.1.31.1.1.1.6 - входящий трафик (байты)

Итак, если вам нужно получить статистику для порта 1, тогда OID будет: 1.3.6.1.2.1.31.1.1.1.10. 1

...