You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.4 KiB
53 lines
1.4 KiB
#!/usr/bin/perl -w |
|
|
|
# SNMP::Extension::PassPersist is required. |
|
# This is in the package libsnmp-extension-passpersist-perl on Debian and |
|
# Ubuntu |
|
# And in the package dev-perl/SNMP-Extension-PassPersist from |
|
# https://git.grifon.fr/alarig/SwordArMor-gentoo-overlay.git overlay |
|
# Usage : Copy the script to /usr/local/bin/ifAlias_persist and add to |
|
# /etc/snmp/snmpd.conf |
|
# pass_persist .1.3.6.1.2.1.31.1.1.1.18 /usr/local/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"; |
|
# get the interfaces |
|
my @iface_list = `ip l | grep mtu | cut -d @ -f 1`; |
|
my $type = "string"; |
|
|
|
foreach my $row (@iface_list){ |
|
my @split = split(": ", $row); |
|
# remove a possible \n |
|
$split[1] =~ s/\R//g; |
|
|
|
# cat the file |
|
my $filename = "/sys/class/net/$split[1]/ifalias"; |
|
open(my $fh, '<:encoding(UTF-8)', $filename) |
|
or die "Could not open file '$filename' $!"; |
|
# fill the OID with the content |
|
while (my $desc = <$fh>) { |
|
chomp $desc; |
|
my ($key, $value) = ("$Base.$split[0]",$desc); |
|
$self->add_oid_entry($key,$type,$value); |
|
} |
|
close $fh; |
|
} |
|
|
|
}
|
|
|