LINUX.ORG.RU

История изменений

Исправление 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";