skip to main |
skip to sidebar
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