История изменений
Исправление nixit, (текущая версия) :
Не получился кусок, который высчитывает локальный адрес, что я приводил выше, вот perl код:
#!/usr/bin/perl -w
use strict;
use SNMP;
use Data::Dumper;
use JSON;
my @json = ();
my $idx = 0;
die "Usage: $0 <host> <port> <community> [regex]" if scalar @ARGV < 3;
my $host = $0 =~ /.*\/(.*)/;
my $REGEX = $ARGV[3] ? $ARGV[3] : undef;
my $sess = new SNMP::Session(
DestHost => "$ARGV[0]:$ARGV[1]",
Community => "$ARGV[2]",
UseNumeric => 1,
NonIncreasing => 1,
UseLongNames => 1,
Version => "2c",
Timeout => 8 * 1000000,
Retries => 1 );
die $sess->{ErrorStr} if ($sess->{ErrorNum});
my ($ospfNbrIpAddr) = $sess->bulkwalk(0, 100, ['.1.3.6.1.2.1.14.10.1.1']);
die $sess->{ErrorStr} if ($sess->{ErrorNum});
foreach(@{$ospfNbrIpAddr}) {
# print Dumper($_);
my $ip = "${$_}[2]";
##################
my ($ospfint) = $sess->bulkwalk(0, 100, ['.1.3.6.1.2.1.14.7.1.1']);
die $sess->{ErrorStr} if ($sess->{ErrorNum});
foreach(@{$ospfint}) {
#print Dumper($_);
my $ospfip = "${$_}[2]";
my $netmask = $sess->get([".1.3.6.1.2.1.4.20.1.3.$ospfip"]);
#print "$ospfip $netmask\n";
####### О Я Х.З, чё тут делать дальше :(
#### бла-бла-бла,
## gw = бла-бла
}
##################
my ($index) = $sess->get([".1.3.6.1.2.1.4.20.1.2.$gw"]);
my ($ifalias) = $sess->get([".1.3.6.1.2.1.31.1.1.1.18.$index"]);
my ($status) = $sess->get([".1.3.6.1.2.1.14.10.1.6.$ip.0"]);
my ($ifdescr) = $sess->get([".1.3.6.1.2.1.2.2.1.2.$index"]);
my ($ifspeed) = $sess->get([".1.3.6.1.2.1.2.2.1.5.$index"]);
$json[$idx] = { '{#IP}' => $ip, '{#GW}' => $gw, '{#SNMPINDEX}' => $index, '{#IFALIAS}' => $ifalias, '{#STATUS}' => $status, '{#IFDESCR}' => $ifdescr, '{#IFSPEED}' => $ifspeed/1000000};
$idx++;
}
print "{\"data\":";
print to_json(\@json, {ascii => 1, pretty => 1});
print "}\n";
Пробую использовать разные модули для ip сетей, но что-то никак.
Исправление nixit, :
Не получился кусок, который высчитывает локальный адрес, что я приводил выше, вот perl код:
#!/usr/bin/perl -w
use strict;
use SNMP;
use Data::Dumper;
use JSON;
my @json = ();
my $idx = 0;
die "Usage: $0 <host> <port> <community> [regex]" if scalar @ARGV < 3;
my $host = $0 =~ /.*\/(.*)/;
my $REGEX = $ARGV[3] ? $ARGV[3] : undef;
my $sess = new SNMP::Session(
DestHost => "$ARGV[0]:$ARGV[1]",
Community => "$ARGV[2]",
UseNumeric => 1,
NonIncreasing => 1,
UseLongNames => 1,
Version => "2c",
Timeout => 8 * 1000000,
Retries => 1 );
die $sess->{ErrorStr} if ($sess->{ErrorNum});
my ($ospfNbrIpAddr) = $sess->bulkwalk(0, 100, ['.1.3.6.1.2.1.14.10.1.1']);
die $sess->{ErrorStr} if ($sess->{ErrorNum});
foreach(@{$ospfNbrIpAddr}) {
# print Dumper($_);
my $ip = "${$_}[2]";
##################
my ($ospfint) = $sess->bulkwalk(0, 100, ['.1.3.6.1.2.1.14.7.1.1']);
die $sess->{ErrorStr} if ($sess->{ErrorNum});
foreach(@{$ospfint}) {
#print Dumper($_);
my $ospfip = "${$_}[2]";
my $netmask = $sess->get([".1.3.6.1.2.1.4.20.1.3.$ospfip"]);
#print "$ospfip $netmask\n";
####### О Я Х.З, чё тут делать дальше :(
#### бла-бла-бла,
## gw = бла-бла
##################
my ($index) = $sess->get([".1.3.6.1.2.1.4.20.1.2.$gw"]);
my ($ifalias) = $sess->get([".1.3.6.1.2.1.31.1.1.1.18.$index"]);
my ($status) = $sess->get([".1.3.6.1.2.1.14.10.1.6.$ip.0"]);
my ($ifdescr) = $sess->get([".1.3.6.1.2.1.2.2.1.2.$index"]);
my ($ifspeed) = $sess->get([".1.3.6.1.2.1.2.2.1.5.$index"]);
$json[$idx] = { '{#IP}' => $ip, '{#GW}' => $gw, '{#SNMPINDEX}' => $index, '{#IFALIAS}' => $ifalias, '{#STATUS}' => $status, '{#IFDESCR}' => $ifdescr, '{#IFSPEED}' => $ifspeed/1000000};
$idx++;
}
print "{\"data\":";
print to_json(\@json, {ascii => 1, pretty => 1});
print "}\n";
Пробую использовать разные модули для ip сетей, но что-то никак.
Исправление nixit, :
Не получился кусок, который высчитывает локальный адрес, что я приводил выше, вот perl код:
#!/usr/bin/perl -w
use strict;
use SNMP;
use Data::Dumper;
use JSON;
my @json = ();
my $idx = 0;
die "Usage: $0 <host> <port> <community> [regex]" if scalar @ARGV < 3;
my $host = $0 =~ /.*\/(.*)/;
my $REGEX = $ARGV[3] ? $ARGV[3] : undef;
my $sess = new SNMP::Session(
DestHost => "$ARGV[0]:$ARGV[1]",
Community => "$ARGV[2]",
UseNumeric => 1,
NonIncreasing => 1,
UseLongNames => 1,
Version => "2c",
Timeout => 8 * 1000000,
Retries => 1 );
die $sess->{ErrorStr} if ($sess->{ErrorNum});
my ($ospfNbrIpAddr) = $sess->bulkwalk(0, 100, ['.1.3.6.1.2.1.14.10.1.1']);
die $sess->{ErrorStr} if ($sess->{ErrorNum});
foreach(@{$ospfNbrIpAddr}) {
# print Dumper($_);
my $ip = "${$_}[2]";
##################
my ($ospfint) = $sess->bulkwalk(0, 100, ['.1.3.6.1.2.1.14.7.1.1']);
die $sess->{ErrorStr} if ($sess->{ErrorNum});
foreach(@{$ospfint}) {
#print Dumper($_);
my $ospfip = "${$_}[2]";
my $netmask = $sess->get([".1.3.6.1.2.1.4.20.1.3.$ospfip"]);
#print "$ospfip $netmask\n";
####### О Я Х.З, чё тут делать дальше :(
#### бла-бла-бла,
## gw = бла-бла
##################
my ($index) = $sess->get([".1.3.6.1.2.1.4.20.1.2.$gw"]);
my ($ifalias) = $sess->get([".1.3.6.1.2.1.31.1.1.1.18.$index"]);
my ($status) = $sess->get([".1.3.6.1.2.1.14.10.1.6.$ip.0"]);
my ($ifdescr) = $sess->get([".1.3.6.1.2.1.2.2.1.2.$index"]);
my ($ifspeed) = $sess->get([".1.3.6.1.2.1.2.2.1.5.$index"]);
$json[$idx] = { '{#IP}' => $ip, '{#GW}' => $gw, '{#SNMPINDEX}' => $index, '{#IFALIAS}' => $ifalias, '{#STATUS}' => $status, '{#IFDESCR}' => $ifdescr, '{#IFSPEED}' => $ifspeed/1000000};
$idx++;
}
print "{\"data\":";
print to_json(\@json, {ascii => 1, pretty => 1});
print "}\n";
Пробую использовать разные модули для ip сетей, но что-то никак.
Исходная версия nixit, :
Не получился кусок, который высчитывает локальный адрес, что я приводил выше, вот perl код:
#!/usr/bin/perl -w
use strict;
use SNMP;
use Data::Dumper;
use JSON;
my @json = ();
my $idx = 0;
die "Usage: $0 <host> <port> <community> [regex]" if scalar @ARGV < 3;
my $host = $0 =~ /.*\/(.*)/;
my $REGEX = $ARGV[3] ? $ARGV[3] : undef;
my $sess = new SNMP::Session(
DestHost => "$ARGV[0]:$ARGV[1]",
Community => "$ARGV[2]",
UseNumeric => 1,
NonIncreasing => 1,
UseLongNames => 1,
Version => "2c",
Timeout => 8 * 1000000,
Retries => 1 );
die $sess->{ErrorStr} if ($sess->{ErrorNum});
my ($ospfNbrIpAddr) = $sess->bulkwalk(0, 100, ['.1.3.6.1.2.1.14.10.1.1']);
die $sess->{ErrorStr} if ($sess->{ErrorNum});
foreach(@{$ospfNbrIpAddr}) {
# print Dumper($_);
my $ip = "${$_}[2]";
##################
my ($ospfint) = $sess->bulkwalk(0, 100, ['.1.3.6.1.2.1.14.7.1.1']);
die $sess->{ErrorStr} if ($sess->{ErrorNum});
foreach(@{$ospfint}) {
#print Dumper($_);
my $ospfip = "${$_}[2]";
my $netmask = $sess->get([".1.3.6.1.2.1.4.20.1.3.$ospfip"]);
#print "$ospfip $netmask\n";
####### О Я Х.З, чё тут делать дальше :(
#### бла-бла-бла,
## gw = бла-бла
##################
my ($index) = $sess->get([".1.3.6.1.2.1.4.20.1.2.$gw"]);
my ($ifalias) = $sess->get([".1.3.6.1.2.1.31.1.1.1.18.$index"]);
my ($status) = $sess->get([".1.3.6.1.2.1.14.10.1.6.$ip.0"]);
my ($ifdescr) = $sess->get([".1.3.6.1.2.1.2.2.1.2.$index"]);
my ($ifspeed) = $sess->get([".1.3.6.1.2.1.2.2.1.5.$index"]);
$json[$idx] = { '{#IP}' => $ip, '{#GW}' => $gw, '{#SNMPINDEX}' => $index, '{#IFALIAS}' => $ifalias, '{#STATUS}' => $status, '{#IFDESCR}' => $ifdescr, '{#IFSPEED}' => $ifspeed/1000000};
$idx++;
}
print "{\"data\":";
print to_json(\@json, {ascii => 1, pretty => 1});
print "}\n";