RouterOS Function
Copyright (c) Kenkilaw
Version 1.0
Last update: 4/10/2020
After detected VM host unable to ping count 4, auto disable/enable VM host and sends email notification
:global sendEMAIL do={
:local targetVMname $c
:local GUser “YYY@YYY.com”
:local GPass “PWPWPWPW”
#寄件人
:local MailFrom “YYY@YYY.com”
#收件人
:local MailTo “XXX@XXX.com”
/tool e-mail set address=smtp.XXXX.com port=587 start-tls=yes
/tool e-mail set user=$GUser
/tool e-mail set password=$GPass
/tool e-mail set from=$MailFrom
/tool e-mail send to=$MailTo subject=($targetVMname . " – vm_watchdog rebooted " . [:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6]) body=($targetVMname . " – vm_watchdog rebooted")
:log warning ("vm_watchdog $targetVMname emailed at " . [/system clock get time] . " " . [/system clock get date] . " ")
}
:global VMwatchdog do={
:local targetVM $a
:local targetPing $b
:global sendEMAIL
:if ([/ping $targetPing interval=1 count=4] =0) do={
:if ([/kvm get $targetVM state]=“running”) do={
/kvm disable $targetVM
delay 10
}
/kvm enable $targetVM
$sendEMAIL c=$targetVM
} else={
:log info (“vm_watchdog $targetVM Health Check okay”)
}
#:return ($a . $b)
}
:global checkURL do={
:local ftpresults “Sucessful”
:local targetVM $a
:local result [/tool fetch url=$serverurl as-value output=user];
:if ($result->“status” = “finished”) do={
:log warning (“vm_watchdog URL $serverurl $targetVM Health Check okay”)
} else={
:log warning (“Failed”)
/kvm disable $targetVM
delay 20
/kvm enable $targetVM
$sendEMAIL c=$targetVM
}
}
$VMwatchdog a=ubuntu b=192.168.5.226
$VMwatchdog a=openwrt b=192.168.5.253
$VMwatchdog a=openwrt2 b=192.168.5.155
$checkURL serverurl=“http://192.168.5.226:3000/” a=ubuntu