From e8bd42f507819c0e410898dd0dcb16aa05c6c562 Mon Sep 17 00:00:00 2001 From: alarig Date: Sun, 20 Oct 2019 16:30:45 +0200 Subject: [PATCH] First commit --- README.md | 4 +++- ifAlias_persist | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100755 ifAlias_persist diff --git a/README.md b/README.md index a86b00d..cf7e1f5 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ # snmp-ifalias -Perl script feeding the ifAlias table \ No newline at end of file +Perl script feeding the ifAlias table + +Inspirated from https://github.com/pgmillon/observium/blob/master/scripts/ifAlias_persist diff --git a/ifAlias_persist b/ifAlias_persist new file mode 100755 index 0000000..9f0180c --- /dev/null +++ b/ifAlias_persist @@ -0,0 +1,52 @@ +#!/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); + } + } + +}