## Fox RouterOS Notification :local Project "Resource Report"; :local WanInterface "pppoe-out1"; # Need to customize :local UpdateChannel "long-term"; ## Check For Upgrade :local SystemVer [/system package update get installed-version ]; :local UpstreamVer; :local Status; :local Channel; :if ($UpstreamVer = nothing) do={ /system package update set channel=$UpdateChannel /system package update check-for-updates :delay 10s; :set UpstreamVer [/system package update get latest-version ]; :set Status [/system package update get status ]; :set Channel [/system package update get channel ]; } ## End Check For Upgrade ## Check Licence Status :local Level [/system license get nlevel ]; :local SID [/system license get software-id ]; :local Features [/system license get features ]; ## End Check Licence Status ## Check CPU Status :local CpuCores [/system resource get cpu-count ]; :local CpuLoad [/system resource get cpu-load ]; :local CpuFrequency [/system resource get cpu-frequency ]; ## End Check CPU Status ## Check Memory Status :local MemoryFree [/system resource get free-memory ]; :local MemoryTotal [/system resource get total-memory ]; ## End Check Memory Status ## Check Disk Status :local DiskFree [/system resource get free-hdd-space ]; :local DiskTotal [/system resource get total-hdd-space ]; :local DiskWrites [/system resource get write-sect-since-reboot ]; :local DiskWritesTotal [/system resource get write-sect-total ]; :local DiskBadBlocks [/system resource get bad-blocks ]; :if ([:typeof $DiskBadBlocks] = "num") do={ :set DiskBadBlocks "$DiskBadBlocks %"; } else={ :set DiskBadBlocks "No NAND detected"; } ## End Check Disk Status ## Check WAN Status :local WanIPv4 [/ip address get [/ip address find interface=$WanInterface] address ]; :local WanIPv4Network [/ip address get [/ip address find interface=$WanInterface] network ]; :local WanLinkDownTime [/interface get $WanInterface last-link-down-time ]; :local WanLinkUpTime [/interface get $WanInterface last-link-up-time ]; :local WanLinkDowns [/interface get $WanInterface link-downs ]; :local WanTx [/interface get $WanInterface tx-byte ]; :local WanRx [/interface get $WanInterface rx-byte ]; :local WanTxDrop [/interface get $WanInterface tx-drop ]; :local WanRxDrop [/interface get $WanInterface rx-drop ]; :local WanTxError [/interface get $WanInterface tx-error ]; :local WanRxError [/interface get $WanInterface rx-error ]; ## End Check WAN Status ## Check WAN IPv6 Status :local WanIPv6; :local WanIPv6Prefix; :local WanIPv6PrefixLength; :local GetGuaAddress [/ipv6 address find where from-pool ~ ".+" ]; :local LenGuaAddress [:len $GetGuaAddress]; :local IPv6Probe ($GetGuaAddress -> ($LenGuaAddress-1)); :if ($IPv6Probe != nothing) do={ # Check IPv6 Status Passed :set WanIPv6 [/ipv6 address get $IPv6Probe address ]; :set WanIPv6Prefix [/ipv6 dhcp-client get $WanInterface prefix ]; :set WanIPv6PrefixLength [/ipv6 dhcp-client get $WanInterface pool-prefix-length ]; } else={ # Check IPv6 Status Failed :set WanIPv6 "N/A"; :set WanIPv6Prefix "N/A"; :set WanIPv6PrefixLength "N/A"; } ## End Check WAN IPv6 Status ## Check Dns Status :local DnsCacheSize [/ip dns get cache-size ]; :local DnsCacheUsed [/ip dns get cache-used ]; ## End Check Dns Status ## Resolve Mail Server :local MailServer ""; # Need to customize :local SendTo ""; # Need to customize :local MailTls "yes"; :local MailIp; :onerror e { :retry command={ :set MailIp [:resolve $MailServer ]; :delay 2s; } delay=5 max=3; } do={ # Failed to resolve mail server :error ("Failed to resolve email server address..."); } ## End Resolve :local DeviceName [/system identity get name ]; :local Time [/system clock get time ]; :local Date [/system clock get date ]; :local Uptime [/system resource get uptime ]; /tool e-mail send server=$MailIp tls=$MailTls to=$SendTo \ subject="$DeviceName $Project: [Uptime: $Uptime] [$Date $Time]" body= \ "=====> RouterOS Report <=====\r Router hostname: $DeviceName\r System date: $Date $Time\r System uptime: $Uptime\r System status: $Status\r Upstream version: $UpstreamVer ( channel: $Channel )\r Installed version: $SystemVer\r System licence level: $Level\r System software ID: $SID\r System features: $Features\r =====> Extranet Status <=====\r WAN interface: $WanInterface\r Last link down time: $WanLinkDownTime\r Last link up time: $WanLinkUpTime\r Link downs: $WanLinkDowns\r IPv4 address: $WanIPv4\r Network: $WanIPv4Network\r Prefix: $WanIPv6Prefix\r IPv6 address: $WanIPv6\r Pool prefix length: $WanIPv6PrefixLength\r WAN Rx: $[($WanRx / 1048576)] MiB ( as $[($WanRx / 1073741824)] GiB )\r WAN Tx: $[($WanTx / 1048576)] MiB ( as $[($WanTx / 1073741824)] GiB )\r WAN Rx quality: Drop $WanRxDrop , Error $WanRxError\r WAN Tx quality: Drop $WanTxDrop , Error $WanTxError\r =====> CPU <=====\r Core: $CpuCores Cores\r Load: $CpuLoad %\r Frequency: $CpuFrequency MHz\r =====> Memory <=====\r Total: $[($MemoryTotal / 1048576)] MiB\r Used: $[(($MemoryTotal / 1048576) - ($MemoryFree / 1048576))] MiB\r Free: $[($MemoryFree / 1048576)] MiB\r =====> Disk <=====\r Total: $[($DiskTotal / 1048576)] MiB\r Used: $[(($DiskTotal / 1048576) - ($DiskFree / 1048576))] MiB\r Free: $[($DiskFree / 1048576)] MiB\r Total sector writes: $DiskWritesTotal\r Sector writes since reboot: $DiskWrites\r Bad blocks: $DiskBadBlocks\r =====> DNS <=====\r Cache size: $DnsCacheSize KiB\r Cache used: $DnsCacheUsed KiB\r Cache free: $[($DnsCacheSize - $DnsCacheUsed)] KiB\r "; ## End Fox RouterOS Notification