#!/usr/bin/perl -w # SNMP::Extension::PassPersist is required. # This is in the package libsnmp-extension-passpersist-perl on Debian and Ubuntu # Usage : Copy the script to /usr/bin/ifAlias_persist and add to /etc/snmp/snmpd.conf # pass_persist .1.3.6.1.2.1.31.1.1.1.18 /usr/bin/ifAlias_persist use strict; use SNMP::Extension::PassPersist; # create the object my $extsnmp = SNMP::Extension::PassPersist->new( backend_collect => \&update_tree, idle_count => 10, # no more than 10 idle cycles refresh => 60, # refresh every 60 sec ); # run the program $extsnmp->run; sub update_tree { my ($self) = @_; my $Base = ".1.3.6.1.2.1.31.1.1.1.18"; my @iface_list = `ip l | grep mtu`; my $type = "string"; foreach my $row (@iface_list){ my @split = split(": ", $row); my $desc = `grep -A 1 "^interface $split[1]" /etc/frr/frr.conf|tail -1 |sed "s/^\\ description\\ //"`; chomp($desc); my ($key, $value) = ("$Base.$split[0]",$desc); $self->add_oid_entry($key,$type,$value); } #$extsnmp->dump_oid_tree(); }