disable/enable ethernet interface script

Thanks, made my day, works like a charm…

The email part of the code above, that seems to be a complete setup and long, but what about using the email tool already existing on the router, can that code be shortened up to take advantage of the existing config??

Hi Evandro!

Can you help me on this script?
I have only altered the eth0 name and removed the email part, but the result was only enable and disable the eth0:
And if I remove the ether2"="1Gbps part, the script stops (don’t work anymore)…

:local "ethernetSpeeds" { "WAN 4 - Oi"="300Mbps" ; "ether2"="1Gbps" }
:local cycleNumber 3
:local downtime 2
:local sleepBetween 5
:local trying false;

:foreach ethName,targetSpeed in=$ethernetSpeeds do={
	/interface ethernet {
		monitor $ethName once do { :set $currentSpeed $rate }
		:local loopCounter 0

		:if ($currentSpeed != $targetSpeed) do { :log info "Port $ethName current speed: $currentSpeed, target = $targetSpeed: [FAILURE]"	}

		:while (($currentSpeed != $targetSpeed) && ($loopCounter < $cycleNumber)) do={
			:if (!trying) do {	:log info "Starting interface reset procedure >>> " }

			set $ethName disabled=yes
			:delay $downtime
			set $ethName disabled=no
			:set $loopCounter ($loopCounter + 1)
			:delay $sleepBetween

			monitor $ethName once do { :set $currentSpeed $rate }
			:if ($currentSpeed = $targetSpeed) do { :log info "Interface target speed restored." } else { 
				:log info "Attempt $loopCounter of $cycleNumber failed.";
				:set $trying true;
				:if ($loopCounter = $cycleNumber) do {
					:log info "Trying to send email alert...";
				}
			}
		}
	}
}

Thanks in advance and I’m from Brazil too.