Thanks but I don't see attachments. Does Butch scrub attachments on this list? Probably.
-Ty On Thu, Sep 20, 2012 at 11:16 AM, Kerry <[email protected]> wrote: > Attached are the relevant scripts, I just open the text file in crimson > editor, copy all the text and paste it into a terminal window. > While you're still in the window, change to > /system script > and > run IPPoolInfo > or whatever you have the name set to if you changed the name of the > script. It will output in the terminal window. > Depending on how many pools you have, the output should resemble below: > > [admin@Attica] /system script> run IPPoolInfo > IP Pool Statistics > ------------------ > Attica [0/245] 0 % used > Imlay [0/245] 0 % used > Imlay-Public [116/125] 92 % used > Attica-Public [99/122] 81 % used > [admin@Attica]/system script> > > > > > > > > > > On 9/20/2012 9:03 AM, Ty Featherling wrote: > >> Please do. It doesn't seem the script is doing anything at all right now, >> even when I change the thresholds to low numbers. >> >> -Ty >> >> On Wed, Sep 19, 2012 at 6:56 PM, Leroy Koglin <[email protected]>* >> *wrote: >> >> Correct. Kerry has our routers setup to run the script every 4 hours. If >>> the >>> pool usage us above the warning value defined in the script an error is >>> logged. Remote syslog is enabled and he has rules built into the syslog >>> server to alert us when the dhcp pool error is detected. >>> As a minimum, if you pool usage is above the value you have set it the >>> script on the line :local criticalthreshold 90 you should get an error in >>> the log. The script is set to kick an error if the pool is 90% utilized. >>> Change the 90 to a lower value to test with. >>> >>> The copy/paste may have messed the script up if that is not working for >>> you. >>> Let me know and I'll send you the script as an attachment. >>> >>> Leroy >>> >>> >>> >>> >>> -----Original Message----- >>> From: >>> mikrotik-bounces@mail.**butchevans.com<[email protected]> >>> [mailto:mikrotik-bounces@mail.**butchevans.com<[email protected]>] >>> On Behalf Of Ty Featherling >>> Sent: Wednesday, September 19, 2012 5:53 PM >>> To: Mikrotik discussions >>> Subject: Re: [Mikrotik] Managing DHCP Pools >>> >>> Yeah that didn't do it. It just spits out a warning in the log, right? >>> >>> -Ty >>> >>> On Wed, Sep 19, 2012 at 4:39 PM, Josh Luthman >>> <[email protected]>**wrote: >>> >>> Pretty sure you'd need 70% or 90% capacity filled for it to spit out an >>>> error. Make the warning value something like 1 or 5 and run it to test. >>>> >>>> Josh Luthman >>>> Office: 937-552-2340 >>>> Direct: 937-552-2343 >>>> 1100 Wayne St >>>> Suite 1337 >>>> Troy, OH 45373 >>>> >>>> >>>> On Wed, Sep 19, 2012 at 5:16 PM, Ty Featherling < >>>> [email protected] >>>> >>>>> wrote: >>>>> Ok new script added. Dumped the code in the source field. Left all >>>>> permissions checked and gave it a name. It added it in the list but >>>>> >>>> licking >>>> >>>>> "Run Script" does nothing. Nothing in the log nor any indication is >>>>> >>>> started >>>> >>>>> anything. >>>>> >>>>> -Ty >>>>> >>>>> On Wed, Sep 19, 2012 at 4:04 PM, Josh Luthman >>>>> <[email protected]>**wrote: >>>>> >>>>> I thought there was code above the actual script, sorry! >>>>>> >>>>>> You should use the GUI to make a new script. There are no proper >>>>>> >>>>> breaks >>> >>>> in >>>>> >>>>>> the email to make it easy in the terminal. >>>>>> >>>>>> Josh Luthman >>>>>> Office: 937-552-2340 >>>>>> Direct: 937-552-2343 >>>>>> 1100 Wayne St >>>>>> Suite 1337 >>>>>> Troy, OH 45373 >>>>>> >>>>>> >>>>>> On Wed, Sep 19, 2012 at 5:00 PM, Ty Featherling < >>>>>> >>>>> [email protected] >>>> >>>>> wrote: >>>>>>> Pasted it in.. looks like it cleared with no errors. Now what? I >>>>>>> >>>>>> don't >>>> >>>>> see >>>>>> >>>>>>> a new script or any indication of anything new in ip>pool or >>>>>>> ip>dhcp-server. >>>>>>> >>>>>>> -Ty >>>>>>> >>>>>>> On Wed, Sep 19, 2012 at 3:37 PM, Josh Luthman >>>>>>> <[email protected]>**wrote: >>>>>>> >>>>>>> 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/**<http://www.butchevans.com/**pipermail/mikrotik/**> >>>>>>>>>>> attachments/20120919/54ec5d39/****attachment.html< >>>>>>>>>>> >>>>>>>>>> http://www.butchevans.com/**pipermail/mikrotik/** >>> attachments/20120919/54ec5d39/**a<http://www.butchevans.com/pipermail/mikrotik/attachments/20120919/54ec5d39/a> >>> ttachment.html >>> >>>> ______________________________****_________________ >>>>>>>>>>> Mikrotik mailing list >>>>>>>>>>> [email protected] >>>>>>>>>>> http://www.butchevans.com/****mailman/listinfo/mikrotik<http://www.butchevans.com/**mailman/listinfo/mikrotik> >>>>>>>>>>> < >>>>>>>>>>> >>>>>>>>>> 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> >>>>>>>>>> < >>>>>>>>>> >>>>>>>>> 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/**a<http://www.butchevans.com/pipermail/mikrotik/attachments/20120919/abf0ef50/a> >>> ttachment.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 >>>>>>>>> >>>>>>>>> -------------- next part -------------- >>>>>>>> An HTML attachment was scrubbed... >>>>>>>> URL: < >>>>>>>> >>>>>>>> http://www.butchevans.com/**pipermail/mikrotik/** >>> attachments/20120919/45f5f7e4/**a<http://www.butchevans.com/pipermail/mikrotik/attachments/20120919/45f5f7e4/a> >>> ttachment.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 >>>>>>>> >>>>>>>> -------------- next part -------------- >>>>>>> An HTML attachment was scrubbed... >>>>>>> URL: < >>>>>>> >>>>>>> http://www.butchevans.com/**pipermail/mikrotik/** >>> attachments/20120919/d4411d56/**a<http://www.butchevans.com/pipermail/mikrotik/attachments/20120919/d4411d56/a> >>> ttachment.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 >>>>>>> >>>>>>> -------------- next part -------------- >>>>>> An HTML attachment was scrubbed... >>>>>> URL: < >>>>>> >>>>>> http://www.butchevans.com/**pipermail/mikrotik/** >>> attachments/20120919/efe00c84/**a<http://www.butchevans.com/pipermail/mikrotik/attachments/20120919/efe00c84/a> >>> ttachment.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 >>>>>> >>>>>> -------------- next part -------------- >>>>> An HTML attachment was scrubbed... >>>>> URL: < >>>>> >>>>> http://www.butchevans.com/**pipermail/mikrotik/** >>> attachments/20120919/80dc40f5/**a<http://www.butchevans.com/pipermail/mikrotik/attachments/20120919/80dc40f5/a> >>> ttachment.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 >>>>> >>>>> -------------- next part -------------- >>>> An HTML attachment was scrubbed... >>>> URL: < >>>> >>>> http://www.butchevans.com/**pipermail/mikrotik/** >>> attachments/20120919/3f7ad5cd/**a<http://www.butchevans.com/pipermail/mikrotik/attachments/20120919/3f7ad5cd/a> >>> ttachment.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 >>>> >>>> -------------- next part -------------- >>> An HTML attachment was scrubbed... >>> URL: >>> < >>> http://www.butchevans.com/**pipermail/mikrotik/** >>> attachments/20120919/08b665f3/<http://www.butchevans.com/pipermail/mikrotik/attachments/20120919/08b665f3/> >>> 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/20120920/f520cb00/**attachment.html<http://www.butchevans.com/pipermail/mikrotik/attachments/20120920/f520cb00/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 >> >> >> > -------------- next part -------------- > /system logging > add action=remote disabled=no prefix=ChangeMe topics=script,error > /system logging action > set remote bsd-syslog=no name=remote remote=xxx.xxx.xxx.xxx > remote-port=514 \ > src-address=0.0.0.0 syslog-facility=daemon syslog-severity=auto target=\ > remote > /system script > add name=IPPoolInfo policy=\ > ftp,reboot,read,write,policy,**test,winbox,password,sniff,**sensitive,api > \ > source="# List stats for IP -> Pool\r\ > \n#\r\ > \n# criticalthreshold = output pool display in red if pool used is > above t\ > his %\r\ > \n# warnthreshold = output pool display in gold if pool used is above > this\ > \_%\r\ > \n\r\ > \n:local criticalthreshold 90\r\ > \n:local warnthreshold 70\r\ > \n\r\ > \n# Internal processing below...\r\ > \n# ------------------------------**----\r\ > \n/ip pool {\r\ > \n :local poolname\r\ > \n :local pooladdresses\r\ > \n :local poolused\r\ > \n :local poolpercent\r\ > \n :local minaddress\r\ > \n :local maxaddress\r\ > \n :local findindex\r\ > \n :local tmpint\r\ > \n :local maxindex\r\ > \n :local line\r\ > \n\r\ > \n :put (\"IP Pool Statistics\")\r\ > \n :put (\"------------------\")\r\ > \n\r\ > \n# Iterate through IP Pools\r\ > \n :foreach p in=[find] do={\r\ > \n\r\ > \n :set poolname [get \$p name]\r\ > \n :set pooladdresses 0\r\ > \n :set poolused 0\r\ > \n :set line \"\"\r\ > \n\r\ > \n :set line (\" \" . \$poolname)\r\ > \n\r\ > \n# Iterate through current pool's IP ranges\r\ > \n :foreach r in=[:toarray [get \$p range]] do={\r\ > \n\r\ > \n# Get min and max addresses\r\ > \n :set findindex [:find [:tostr \$r] \"-\"]\r\ > \n :if ([:len \$findindex] > 0) do={\r\ > \n :set minaddress [:pick [:tostr \$r] 0 \$findindex]\r\ > \n :set maxaddress [:pick [:tostr \$r] (\$findindex + 1) > [:len \ > [:tostr \$r]]]\r\ > \n } else={\r\ > \n :set minaddress [:tostr \$r]\r\ > \n :set maxaddress [:tostr \$r]\r\ > \n }\r\ > \n\r\ > \n# Convert to array of octets (replace '.' with ',')\r\ > \n :for x from=0 to=([:len [:tostr \$minaddress]] - 1) do={\r\ > \n :if ([:pick [:tostr \$minaddress] \$x (\$x + 1)] = \".\") > do\ > ={\r\ > \n :set minaddress ([:pick [:tostr \$minaddress] 0 \$x] . > \"\ > ,\" . \\\r\ > \n [:pick [:tostr \$minaddress] > (\$x\ > \_+ 1) [:len [:tostr \$minaddress]]]) }\r\ > \n }\r\ > \n :for x from=0 to=([:len [:tostr \$maxaddress]] - 1) do={\r\ > \n :if ([:pick [:tostr \$maxaddress] \$x (\$x + 1)] = \".\") > do\ > ={\r\ > \n :set maxaddress ([:pick [:tostr \$maxaddress] 0 \$x] . > \"\ > ,\" . \\\r\ > \n [:pick [:tostr \$maxaddress] > (\$x\ > \_+ 1) [:len [:tostr \$maxaddress]]]) }\r\ > \n }\r\ > \n\r\ > \n# Calculate available addresses for current range\r\ > \n :if ([:len [:toarray \$minaddress]] = [:len [:toarray > \$maxaddr\ > ess]]) do={\r\ > \n :set maxindex ([:len [:toarray \$minaddress]] - 1)\r\ > \n :for x from=\$maxindex to=0 step=-1 do={\r\ > \n# Calculate 256^(\$maxindex - \$x)\r\ > \n :set tmpint 1\r\ > \n :if ((\$maxindex - \$x) > 0) do={\r\ > \n :for y from=1 to=(\$maxindex - \$x) do={ :set > tmpint (\ > 256 * \$tmpint) }\r\ > \n }\r\ > \n :set tmpint (\$tmpint * ([:tonum [:pick [:toarray > \$maxad\ > dress] \$x]] - \\\r\ > \n [:tonum [:pick > [:toa\ > rray \$minaddress] \$x]]) )\r\ > \n :set pooladdresses (\$pooladdresses + \$tmpint)\r\ > \n# for x\r\ > \n }\r\ > \n\r\ > \n# if len array \$minaddress = \$maxaddress\r\ > \n }\r\ > \n\r\ > \n# Add current range to total pool's available addresses\r\ > \n :set pooladdresses (\$pooladdresses + 1)\r\ > \n\r\ > \n# foreach r\r\ > \n }\r\ > \n\r\ > \n# Now, we have the available address for all ranges in this pool\r\ > \n# Get the number of used addresses for this pool\r\ > \n :set poolused [:len [used find pool=[:tostr \$poolname]]]\r\ > \n :set poolpercent ((\$poolused * 100) / \$pooladdresses)\r\ > \n\r\ > \n# Output information\r\ > \n :set line ([:tostr \$line] . \" [\" . \$poolused . \"/\" . > \$pool\ > addresses . \"]\")\r\ > \n :set line ([:tostr \$line] . \" \" . \$poolpercent . \" % > used\")\ > \r\ > \n\r\ > \n# Set colored display for used thresholds\r\ > \n :if ( [:tonum \$poolpercent] > \$criticalthreshold ) do={\r\ > \n :log error (\"IP Pool \" . \$poolname . \" is \" . > \$poolpercen\ > t . \"% full\" . \" [\" . \$poolused . \"/\" . \$pooladdresses . > \"]\")\r\ > \n :put ([:terminal style varname] . \$line)\r\ > \n } else={\r\ > \n :if ( [:tonum \$poolpercent] > \$warnthreshold ) do={\r\ > \n :log warning (\"IP Pool \" . \$poolname . \" is \" . > \$poolp\ > ercent . \"% full\")\r\ > \n :put ([:terminal style syntax-meta] . \$line)\r\ > \n } else={\r\ > \n :put ([:terminal style none] . \$line)\r\ > \n }\r\ > \n }\r\ > \n\r\ > \n# foreach p\r\ > \n }\r\ > \n# /ip pool\r\ > \n}\r\ > \n" > > ______________________________**_________________ > 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/20120920/c361077b/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

