Sunday, June 19, 2016

Check IP Pool Statistics

 
  • /ip pool {
  • :local poolname
  • :local pooladdresses
  • :local poolused
  • :local poolpercent
  • :local minaddress
  • :local maxaddress
  • :local findindex
  • :local tmpint
  • :local maxindex
  • :local line
  • :put ("IP Pool Statistics")
  • :put ("------------------")
  • :foreach p in=[find] do={
  • :set poolname [get $p name]
  • :set pooladdresses 0
  • :set poolused 0
  • :set line ""
  • :set line (" " . $poolname)
  • :foreach r in=[:toarray [get $p range]] do={
  • :set findindex [:find [:tostr $r] "-"]
  • :if ([:len $findindex] > 0) do={
  • :set minaddress [:pick [:tostr $r] 0 $findindex]
  • :set maxaddress [:pick [:tostr $r] ($findindex + 1) [:len [:tostr $r]]]
  • } else={
  • :set minaddress [:tostr $r]
  • :set maxaddress [:tostr $r]
  • }
  • :for x from=0 to=([:len [:tostr $minaddress]] - 1) do={
  • :if ([:pick [:tostr $minaddress] $x ($x + 1)] = ".") do={
  • :set minaddress ([:pick [:tostr $minaddress] 0 $x] . "," . \
  • [:pick [:tostr $minaddress] ($x + 1) [:len [:tostr $minaddress]]]) }
  • }
  • :for x from=0 to=([:len [:tostr $maxaddress]] - 1) do={
  • :if ([:pick [:tostr $maxaddress] $x ($x + 1)] = ".") do={
  • :set maxaddress ([:pick [:tostr $maxaddress] 0 $x] . "," . \
  • [:pick [:tostr $maxaddress] ($x + 1) [:len [:tostr $maxaddress]]]) }
  • }
  • :if ([:len [:toarray $minaddress]] = [:len [:toarray $maxaddress]]) do={
  • :set maxindex ([:len [:toarray $minaddress]] - 1)
  • :for x from=$maxindex to=0 step=-1 do={
  • # Calculate 256^($maxindex - $x)
  • :set tmpint 1
  • :if (($maxindex - $x) > 0) do={
  • :for y from=1 to=($maxindex - $x) do={ :set tmpint (256 * $tmpint) }
  • }
  • :set tmpint ($tmpint * ([:tonum [:pick [:toarray $maxaddress] $x]] - \
  • [:tonum [:pick [:toarray $minaddress] $x]]) )
  • :set pooladdresses ($pooladdresses + $tmpint)
  • # for x
  • }
  • # if len array $minaddress = $maxaddress
  • }
  • # Add current range to total pool's available addresses
  • :set pooladdresses ($pooladdresses + 1)
  • # foreach r
  • }
  • :set poolused [:len [used find pool=[:tostr $poolname]]]
  • :set poolpercent (($poolused * 100) / $pooladdresses)
  • :set line ([:tostr $line] . " [" . $poolused . "/" . $pooladdresses . "]")
  • :set line ([:tostr $line] . " " . $poolpercent . " % used")
  • :if ( [:tonum $poolpercent] > $criticalthreshold ) do={
  • :log error ("IP Pool " . $poolname . " is " . $poolpercent . "% full")
  • :put ([:terminal style varname] . $line)
  • } else={
  • :if ( [:tonum $poolpercent] > $warnthreshold ) do={
  • :log warning ("IP Pool " . $poolname . " is " . $poolpercent . "% full")
  • :put ([:terminal style syntax-meta] . $line)
  • } else={
  • :put ([:terminal style none] . $line)
  • }
  • }
  • # foreach p
  • }
  • # /ip pool
  • }
  • /#IP Pool Statistics 

0 comments:

Post a Comment