Scenario:
You have devices being powered off a MikroTik Routerboard that has POE-OUT capability and one or more of these devices requires to be rebooted as it stops responding.

Resolution:
We're going to put a script on the MikroTik that checks for pings being returned, and after it doesn't respond for X amount of pings, it will turn the port off and back on again



Step 1: Open up Winbox, and under System > Scripts, Click on the blue plus to create a new script.

Name it PortReboot and put the following text in the source box, changing the variables at the top to suit what you're after:

# Change the address of the device you wish to ping
:local PingAddress 172.17.0.2

# How many times it's to ping the address before turning the PoE Off and on Again
:local PingCount 5

# The port that you'd like to reboot
:local PoEPort ether2

# How long the port is to be turned off for
:local PoETime 10

# When the port is turned back on, what state do you want it to go back to (Uncomment only one)
#:local PortState forced-on
#:local PortState auto-on

#Optional: Have it email you when this happens. You'll need to uncomment the part in the script also.
#Email Alerts that the port has been rebooted

:local EmailAddress user@example.co.nz
:local SMTPServer smtp.example.co.nz
:local SMTPUser user@example.co.nz
:local SMTPPassword Passw0rd

{
:if ([/ping $PingAddress count=$PingCount] = 0) do={
/interface ethernet set $PoEPort poe-out=off
delay $PoETime
/interface ethernet set $PoEPort poe-out=$PortState


# /tool e-mail send to=$EmailAddress \
# subject="Port $PoEPort has been rebooted" server=$SMTPServer \
# user=$SMTPUser password=$SMTPPassword
}
}
artsexylightbox


Also, an E-Mail alert has been commented out of the script, you can un-comment this and adjust it to send you an alert when the script runs.

Step 2: Add a schedule to run the script: Go to System > Scheduler, Click on the blue plus to create a new schedule and add following:

name=PortRebootScheduler
start time=startup
interval=1m
on-event=PortReboot