The problem isn't getting the info that I need or even storing it in a variable. If I write the script and do one interface per line, this becomes trivial as each line would have it's own statically named variable. I however want to keep the script as compact as possible. Thus looping through the interfaces rather than hard coding each interface.
If I use a static variable name like the script you referenced below, as the loop goes through each interface, the variable gets rewritten in each instance ending with only the value of the last interface, which is useless for the other interfaces. Unless there is a way to dynamically create and recall the name of the variable, then this is a non-starter and I'll have to completely rethink my approach. I'm just not sure that the scripting language is powerful enough to handle the task as hand as envisioned. If I could do something like an array "$interface[$count]", or even just some way of appending a variable like "$interface.$count" but that doesn't work. So unless someone has a solution, I'm stuck. -- Christopher Tyler MTCRE/MTCNA/MTCTCE/MTCWE Total Highspeed Internet Services 417.851.1107 ----- Original Message ----- From: "Scott Reed" <sr...@nwwnet.net> To: "Mikrotik discussions" <mikrotik@mail.butchevans.com> Sent: Monday, March 7, 2016 2:23:38 PM Subject: Re: [Mikrotik] Script to monitor ethernet interface speed from the Mikrotik site https://www.mikrotik.com/testdocs/ros/2.8/appex/scripting1.php This should get you going with what you want to do. In this example, we will monitor IP address on the *ether1* interface, and if it is changed, send an e-mail: /system script add name="changed-address" source={ :if ([/system scheduler get check run-count]<=1) do={ /system script run start-once } :global temp :global b :set temp $a :set b [ \ /ip address get \ [/ip address find=interface=ether1] \ address \ ] :if ($temp != $b) do={ /tool e-mail send \ to=exam...@example.com \ subject="The dynamic IP gets changed" :set a $b } } /system script add name="start-once" source={ :global a :set a [ \ /ip address get \ [/ip address find interface=ether1] \ address \ ] } /system scheduler add name=check interval=1m on-event=changed-address On 3/7/2016 2:22 PM, Christopher Tyler wrote: > I'm in need of a little scripting assistance. I'm trying to write a router > script that gets the current link speed of all the interfaces on a router and > compare that against the previous value that was received from that same > script. > > Below is the script that I have so far. Right now it loops through all of the > interfaces, checks to see if there is an active Ethernet link, then it gets > the current rate and compares it to the string "1Gbps", if it's not 1Gbps it > then puts a message in the log for for that interface. What I can't figure > out is how to store a variable as part of the variable name so that I can > compare it to the current value to see if the link changed, which is what I > really want to know. But I need that stored value in order to check against > it, rather than the string 1Gbps. > > :global identity ([/system identity get name]) > :foreach interface in=[/interface ethernet find] do={ > /interface ethernet monitor numbers=$interface once do={ > :if ("$status" = "link-ok") do { > :if ("$rate" != "1Gbps") do { > :log info message=($name . " is set to " . $rate) > }}}} > > This will eventually send an email, I just have it logging right now to keep > my inbox from getting flooded. And before anyone says it. Yes, I know that > the built in logging can do this, but we have over 100 routers and figuring > out which one sent out a message is not an entirely non-time consuming task, > and I ultimately we would like a little more information in the email than > what the logging system provides. > > Any assistance is greatly appreciated. > -- Scott Reed Wireless Networking Network Design, Installation and Administration Mikrotik Advanced Certified -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.butchevans.com/pipermail/mikrotik/attachments/20160307/688307dc/attachment.html> _______________________________________________ Mikrotik mailing list Mikrotik@mail.butchevans.com http://mail.butchevans.com/mailman/listinfo/mikrotik Visit http://blog.butchevans.com/ for tutorials related to Mikrotik RouterOS _______________________________________________ Mikrotik mailing list Mikrotik@mail.butchevans.com http://mail.butchevans.com/mailman/listinfo/mikrotik Visit http://blog.butchevans.com/ for tutorials related to Mikrotik RouterOS