リモートホストから送受信されたバイトを取得することになっているPerlスクリプトを書いています。簡単に言えば、ネットワークトラフィックを監視したいと思います。ホストは実際のホストまたはルーター/スイッチなどの他のものである可能性があることに注意してください。取得したデータはラウンドロビンデータベースに保存されますが、それは重要ではありません。
私が最初に行うことは、ホストのインターフェースを取得することです。次に、トラフィックの使用状況を探すことになっています。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);
}