Yep. Put it in a terminal. Sometimes browsers turn " into some weird character... On Sep 19, 2012 3:56 PM, "Ty Featherling" <[email protected]> wrote:
> 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 > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://www.butchevans.com/pipermail/mikrotik/attachments/20120919/45f5f7e4/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

