Ok, hold my hand here.. Just copy that text and paste it into a terminal
windows, yes? Or do I create a script and paste it there? Be gentle, it's
my first time.

-Ty

On Wed, Sep 19, 2012 at 1:45 PM, Kerry <[email protected]> wrote:

> I use this script, schedule it to run however often you'd like. It throws
> a script error when it's above the thresholds in the script.
> I have system logging set to log script errors to my syslog box which
> email-alerts us.
> /system logging
> add action=remote disabled=no prefix=DCHP-Server topics=script,error
>
>
>
> # List stats for IP -> Pool
> #
> # criticalthreshold = output pool display in red if pool used is above
> this %
> # warnthreshold = output pool display in gold if pool used is above this %
>
> :local criticalthreshold 90
> :local warnthreshold 70
>
> # Internal processing below...
> # ------------------------------**----
> /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 ("------------------")
>
> # Iterate through IP Pools
>    :foreach p in=[find] do={
>
>       :set poolname [get $p name]
>       :set pooladdresses 0
>       :set poolused 0
>       :set line ""
>
>       :set line ("     " . $poolname)
>
> #   Iterate through current pool's IP ranges
>       :foreach r in=[:toarray [get $p range]] do={
>
> #      Get min and max addresses
>          :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]
>          }
>
> #       Convert to array of octets (replace '.' with ',')
>          :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]]]) }
>          }
>
> #      Calculate available addresses for current range
>          :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
>       }
>
> #   Now, we have the available address for all ranges in this pool
> #   Get the number of used addresses for this pool
>       :set poolused [:len [used find pool=[:tostr $poolname]]]
>       :set poolpercent (($poolused * 100) / $pooladdresses)
>
> #   Output information
>       :set line ([:tostr $line] . "  [" . $poolused . "/" . $pooladdresses
> . "]")
>       :set line ([:tostr $line] . "  " . $poolpercent . " % used")
>
> #   Set colored display for used thresholds
>       :if ( [:tonum $poolpercent] > $criticalthreshold ) do={
>          :log error ("IP Pool " . $poolname . " is " . $poolpercent . "%
> full" . " [" . $poolused . "/" . $pooladdresses . "]")
>          :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
>
> }
> On 9/19/2012 11:33 AM, Ty Featherling wrote:
>
>> I have a routerboard acting as my primary DHCP server. I am also adding
>> routers to this large bridged network a tower at a time and each new
>> router
>> holds DHCP pools for their segment as well.
>>
>> How can I keep track of how many addresses are being utilized per pool? I
>> know that "ip dhcp-server lease print" will show how many active leases
>> there are but I want to see the number of unused addresses in a pool. I
>> have to do math in my head each time to compare the number of addresses in
>> the pool to the number of active leases to get that number.
>>
>> Has anyone found or created a more elegant solution to this?
>>
>> -Ty
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL: <http://www.butchevans.com/**pipermail/mikrotik/**
>> attachments/20120919/54ec5d39/**attachment.html<http://www.butchevans.com/pipermail/mikrotik/attachments/20120919/54ec5d39/attachment.html>
>> >
>> ______________________________**_________________
>> Mikrotik mailing list
>> [email protected]
>> http://www.butchevans.com/**mailman/listinfo/mikrotik<http://www.butchevans.com/mailman/listinfo/mikrotik>
>>
>> Visit http://blog.butchevans.com/ for tutorials related to Mikrotik
>> RouterOS
>>
>>
>>
>
> ______________________________**_________________
> Mikrotik mailing list
> [email protected]
> http://www.butchevans.com/**mailman/listinfo/mikrotik<http://www.butchevans.com/mailman/listinfo/mikrotik>
>
> Visit http://blog.butchevans.com/ for tutorials related to Mikrotik
> RouterOS
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://www.butchevans.com/pipermail/mikrotik/attachments/20120919/abf0ef50/attachment.html>
_______________________________________________
Mikrotik mailing list
[email protected]
http://www.butchevans.com/mailman/listinfo/mikrotik

Visit http://blog.butchevans.com/ for tutorials related to Mikrotik RouterOS

Reply via email to