#!/usr/bin/perl -w### apt-get install libsnmp-extension-passpersist-perl## 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_persistusestrict;useSNMP::Extension::PassPersist;# create the objectmy$extsnmp=SNMP::Extension::PassPersist->new(backend_collect=>\&update_tree,idle_count=>10,# no more than 10 idle cyclesrefresh=>60,# refresh every 60 sec);# run the program$extsnmp->run;subupdate_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";foreachmy$row(@iface_list){my@split=split(": ",$row);my$desc=`grep "^# $split[1]:" /etc/network/interfaces|sed s/^\\#\\ $split[1]:\\ //`;chomp($desc);my($key,$value)=("$Base.$split[0]",$desc);$self->add_oid_entry($key,$type,$value);}# $extsnmp->dump_oid_tree();}
This will provide a list of interfaces in the same fashion this script does:
ip l | awk -F: ' /: / {print $2}'
This basically tells us what interfaces we’ll want to have comments in /etc/network/interfaces