diff options
author | Kristian Lyngstol <kristian@bohemians.org> | 2016-04-01 19:14:20 +0200 |
---|---|---|
committer | Kristian Lyngstol <kristian@bohemians.org> | 2016-04-01 19:14:20 +0200 |
commit | bc83b07e4aa4c68f63f4e1b9f6f00757388ea13c (patch) | |
tree | ccb9a45430645ea80bca1b3717e453e254229a0e /examples/tg16/munin/dhcp_usage | |
parent | 1d2470a411e5eaac7e5a1c5d5b6b81e92c92f4a8 (diff) | |
parent | 3dc8afb739a03459393d3cda79bd16cefff15cae (diff) |
Merge branch 'master' of github.com:tech-server/tgmanage
Diffstat (limited to 'examples/tg16/munin/dhcp_usage')
-rw-r--r-- | examples/tg16/munin/dhcp_usage | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/examples/tg16/munin/dhcp_usage b/examples/tg16/munin/dhcp_usage new file mode 100644 index 0000000..f8d29a5 --- /dev/null +++ b/examples/tg16/munin/dhcp_usage @@ -0,0 +1,80 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use POSIX; + +my $dhcpd_cmd="/usr/local/bin/dhcpd-pools"; +my $dhcpd_lf="/var/lib/dhcp/dhcpd.leases"; +my $dhcpd_cf="/etc/dhcp/dhcpd.conf"; + +my @output = `$dhcpd_cmd -c $dhcpd_cf -l $dhcpd_lf`; + +my $line; +my $subnet; +my $subnet2; + +for $line (@output) { + + next if ($line =~ /^(shared net name|Ranges|name|Shared networks|Sum of all)/) or (length $line <= 1); + + if ($line =~ /([\d]+\.[\d]+\.[\d]+\.[\d]+)\s+\-\s+([\d]+\.[\d]+\.[\d]+\.[\d]+)\s+([\d]+)\s+([\d]+)\s+([\d]+\.[\d]+)/) { + + my $first_ip=$1; + my $last_ip=$2; + my $max=$3; + my $current=$4; + my $percent=ceil($5); + + my $octet; + my @octets; + + my $octet_count=0; + for $octet (@octets=(split('\.',$first_ip))) { + if ($octet_count == 3) { + $octet_count=0; + $subnet = $first_ip; + substr($subnet,-length($octet)) = ($octet-4); + $subnet =~ s/\./_/g; + + if (defined $ARGV[0] && $ARGV[0] eq "config") { + print_config($subnet); + } else { + print "dhcp_pool_${subnet}.value $percent\n"; + } + + } + + $octet_count++; + + } + + } + +} + +sub print_config { + +my $graph_name; + +$graph_name = shift; + +print <<EOF; +graph_args --upper-limit 100 -l 0 +graph_title DHCP IPv4 Pools Status +graph_vlabel % +graph_category DHCP +dhcp_pool_${graph_name}.label $graph_name +EOF + +} + +# print_config; + +#shared net name first ip last ip max cur percent touch t+c t+c perc +# All networks 88.92.0.4 - 88.92.0.62 59 26 44.068 2 28 47.458 + +#} + + + |