Scripts

Podemos crear diferentes scripts para que se ejecuten manualmente o a una hora determinada . Para crear scripts vamos a /System/Scripts

Podemos encontrar muchos ejemplos de scripts en https://www.adslzone.net/foro/mikrotik.199/manual-mikrotik-coleccion-scripting.575217/

Permisos

Permisos disponibles para los scripts. No todos son necesarios:

  • ftp - Acceder remotamente a un ftp y enviar y recibir ficheros desde el router
  • password - cambiar contraseñas
  • policy - gestionar políticas de usuario, añadir y eliminar usuarios
  • read - leer la configuración del router
  • reboot - reiniciar el router
  • sensitive - permite cambiar parámetros “hide sensitive”
  • sniff - puede ejecutar sniffer, torch etc…
  • test - puede ejecutar ping, traceroute, bandwidth test…
  • write - puede cambiar la configuración

Ejecutar un script desde la terminal

/system script run nombre_script

Para ver el resultado de un comando desde la terminal anteponer :put

por ejemplo:

:put [/ip cloud get public-address] 

Scripts de ejemplo

Enviar correo

/tool e-mail send to="luiscarlos@ejemplo.com" subject="$[/system identity get name]" body="Prueba correo automático mikrotik"

Backup por Correo

:local DeviceName [/system identity get name];

/system backup save dont-encrypt=yes name=$DeviceName;
:delay 3;
/export file=$DeviceName;
:delay 3;

/tool e-mail send to="luiscarlos@ejemplo.com"  subject="$DeviceName" file="$DeviceName.backup,$DeviceName.rsc";
:delay 10;

/file remove "$DeviceName.backup";
/file remove "$DeviceName.rsc";

Si queremos que este script se ejecute, por ejemplo, cada 7 días . Vamos a /System/Scheduler y añadimos un evento y ponemos en el cuerpo del evento el nombre que le dimos al script

WoL

Para encender un ordenador en remoto que tengamos conectado al Mikrotik, creamos el siguiente script y ponemos la MAC correspondiente al equipo que vamos a encender

 /tool wol interface=bridge1 mac=88:AE:DD:06:50:CB

Enviar estado del Mikrotik

: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];


# START Send Email
/tool e-mail send to="tucorreo@tucorreo.com" from=$DeviceName 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"
# END Send Email

:log info "Sent Email: WAN IP & System Status"
:log info "Sent Telegram: WAN IP & System Status"

Referencias