Script Extras
Variables para informe
:global human do={
:if ([:typeof $1]="nothing") do={
:error "must provide a byte value to humanize";
};
:local input [:tonum $1];
:if ([:typeof $input]!="num") do={
:error "cannot convert $1 to number";
};
:local q;
:local r;
:local output;
:if ($input<1024) do={
:set $output "$input B";
} else={
:if ($input<1048576) do={
:set q ($input/1024);
:set r ($input-$q*1024);
:set r ($r/102);
:set output "$q.$r KiB";
} else={
:if ($input<1073741824) do={
:set q ($input/1048576);
:set r ($input-$q*1048576);
:set r ($r/104858);
:set output "$q.$r MiB"
} else={
:set q ($input/1073741824);
:set r ($input-$q*1073741824);
:set r ($r/107374182);
:set output "$q.$r GiB"
}
}
}
:return $output
};
***********************************************************************************************************
Informe
# Llamada a la nueva variable global
:global human
:local ipv4 [/ip cloud get public-address];
:local ipv6 [/ip cloud get public-address-ipv6];
:local uptime [/system resource get uptime];
:local CurrentTemp [/system health get [find name=temperature] value];
:local FreeMemory ([/system resource get free-memory] / 1024 / 1024);
:local TotalMemory ([/system resource get total-memory] / 1024 / 1024);
:local cpu [/system resource get cpu];
:local cpuCount [/system resource get cpu-count];
:local cpuFrequency [/system resource get cpu-frequency];
:local cpuLoad [/system resource get cpu-load];
:local freeHdd ([/system resource get free-hdd-space] / 1024 / 1024);
:local totalHdd ([/system resource get total-hdd-space] /1024 / 1024);
:local architectureName [/system resource get architecture-name];
:local boardName [/system resource get board-name];
:local version [/system resource get version];
:local DeviceName [/system identity get name];
# nuevas variables
:local txtotal [$human [/interface get [find name=pppoe-out1] tx-byte]];
:local rxtotal [$human [/interface get [find name=pppoe-out1] rx-byte]];
:local sumtotal [$human ([/interface get pppoe-out1 tx-byte]+[/interface get pppoe-out1 rx-byte])];
:local txtotal [$human [/interface get [find name=pppoe-out1] tx-byte]];
:local rxtotal [$human [/interface get [find name=pppoe-out1] rx-byte]];
:local sumtotal [$human ([/interface get pppoe-out1 tx-byte]+[/interface get pppoe-out1 rx-byte])];
# START Send Email
/tool e-mail send to="micuenta@gmail.com" from="Mikrotik Despacho" subject="\F0\9F\9A\80 $DeviceName System Status" body="IPv4: $ipv4\nIPv6: $ipv6\n\nTemp: $CurrentTemp C\nUptime: $uptime\nFree Memory: $FreeMemory MB\nTotal Memory: $TotalMemory MB\nCPU: $cpu\nCPU Count: $cpuCount\nCPU Frequency: $cpuFrequency MHz\nCPU Load: $cpuLoad %\nFree Disk: $freeHdd MB\nTotal Disk: $totalHdd MB\nArchitecture: $architectureName\nBoard Name: $boardName\nSoftware Version: $version\n\nConsumo total:\nDescarga: $rxtotal\nSubida: $txtotal\nTotal: $sumtotal"
# END Send Email
# START Send Telegram Module
:local MessageText "\F0\9F\9A\80 $DeviceName System Status:%0AIPv4: $ipv4%0AIPv6: $ipv6%0ATemperature: $CurrentTemp %C2%B0 C%0AUptime: $uptime%0AFree Memory: $FreeMemory MB%0ATotal Memory: $TotalMemory MB%0ACPU Load: $cpuLoad %%0ACPU: $cpu%0ACPU Count: $cpuCount%0ACPU Frequency: $cpuFrequency MHz%0AArchitecture: $architectureName%0ABoard Name: $boardName%0ASoftware Version: $version%0AFree Disk: $freeHdd MB%0ATotal Disk: $totalHdd MB%0A----%0A<b><i>Consumo total:</i></b>%0ADescarga: $rxtotal%0ASubida: $txtotal%0ATotal: $sumtotal";
:local SendTelegramMessage [:parse [/system script get MyTGBotSendMessage source]];
$SendTelegramMessage MessageText=$MessageText;
#END Send Telegram Module
:log info "Sent Email: WAN IP & System Status"
:log info "Sent Telegram: WAN IP & System Status"
********************************************Informe DHCP *************************************
:local time [/system clock get time];
:local date [/system clock get date];
:local DeviceName [/system identity get name];
:local i;
:local hostip;
:local hostname;
:local dhcplist "";
:local leasesall [ :len [ /ip dhcp-server lease find where server="PONER AQUÍ EL NOMBRE DE TU SERVIDOR DHCP" ] ];
:local firmware [ /system routerboard get current-firmware ];
:local routeros [ /system package get number=0 value-name=version ];
:local macaddress;
/ip dhcp-server lease;
:foreach i in=[find where server="PONER AQUÍ EL NOMBRE DE TU SERVIDOR DHCP"] do={
:set hostname [get $i host-name];
:set hostip [get $i address];
:set macaddress [get $i active-mac-address];
:set dhcplist ($dhcplist . $hostname . " " . $hostip . " ". $macaddress . "\n");
};
# START Send Email
/tool e-mail send to="tucorreogmail@gmail.com" subject="\E2\84\B9 $DeviceName: DHCP Leases [$date - $time]" body="Total DHCP leases: $leasesall\n\nFirmware: $firmware\nRouterOS: $routeros\n\n$dhcplist" file="";
# END Send Email
/log info "DHCP Leases sent via email"