понедельник, 17 июня 2013 г.

Кастомизация стартового приглашения консоли Mikrotik

Вводная: Необходимо при логине к роутеру Mikrotik вывести в консоль некоторую информацию.

Решение: Используется настройка system note http://wiki.mikrotik.com/wiki/Manual:System/Note и http://wiki.mikrotik.com/wiki/Cool_Console она позволяет указать, что выводить после логина. Информация может быть любая, вплоть до ASCII арта. Единственное но - ограничение в 4096 символа.

Пример скрипта который выводит некоторую диагностическую информацию

/system scheduler
add interval=1m name=InfoConsole on-event=":local content\r\
\n:local logcontenttemp \"\"\r\
\n:local logcontent \"\"\r\
\n:local counter\r\
\n:local v 0\r\
\n \r\
\n:set logcontenttemp \"You are logged into: \$[/system identity get name]\
\"\r\
\n:set logcontent (\"\$logcontent\" .\"\$logcontenttemp\" .\"\\n\")\r\
\n \r\
\n:set logcontenttemp \"############### system health ###############\"\r\
\n:set logcontent (\"\$logcontent\" .\"\$logcontenttemp\" .\"\\n\")\r\
\n \r\
\n:set logcontenttemp \"Uptime: \$[/system resource get uptime] d:h:m:s\"\
\r\
\n:set logcontent (\"\$logcontent\" .\"\$logcontenttemp\" .\" | \")\r\
\n \r\
\n:set logcontenttemp \"CPU: \$[/system resource get cpu-load]%\"\r\
\n:set logcontent (\"\$logcontent\" .\"\$logcontenttemp\" .\"\\n\")\r\
\n \r\
\n:set logcontenttemp \"RAM: \$(([/system resource get total-memory]-[/sys\
tem resource get free-memory])/1024)/\$([/system resource get total-memory\
]/1024)M\"\r\
\n:set logcontent (\"\$logcontent\" .\"\$logcontenttemp\" .\" | \")\r\
\n \r\
\n##\r\
\n#voltage and temp readout not available on x86, check for this before tr\
ying\r\
\n#to record otherwise script will halt unexpectedly\r\
\n##\r\
\n \r\
\n:if ([/system resource get architecture-name]=\"x86\") do={\r\
\n :set logcontenttemp \"Voltage: NIL\"\r\
\n :set logcontent (\"\$logcontent\" .\"\$logcontenttemp\" .\" | \")\r\
\n :set logcontenttemp \"Temp: NIL\"\r\
\n :set logcontent (\"\$logcontent\" .\"\$logcontenttemp\" .\"\\n\")\r\
\n} else={\r\
\n :set logcontenttemp \"Voltage: \$[:pick [/system health get voltage] 0\
\_2] v\"\r\
\n :set logcontent (\"\$logcontent\" .\"\$logcontenttemp\" .\" | \")\r\
\n :set logcontenttemp \"Temp: \$[ /system health get temperature]c\"\r\
\n :set logcontent (\"\$logcontent\" .\"\$logcontenttemp\" .\"\\n\")\r\
\n}\r\
\n \r\
\n:set logcontenttemp \"############# user auth details #############\"\r\
\n:set logcontent (\"\$logcontent\" .\"\$logcontenttemp\" .\"\\n\")\r\
\n \r\
\n:foreach counter in=[/ip hotspot active find ] do={:set v (\$v + 1)}\r\
\n:set logcontenttemp \"Hotspot online: \$v |\"\r\
\n:set v 0\r\
\n:foreach counter in=[/ppp active find ] do={:set v (\$v + 1)}\r\
\n:set logcontenttemp (\"\$logcontenttemp\" . \" PPP online: \$v\")\r\
\n:set logcontent (\"\$logcontent\" .\"\$logcontenttemp\" .\"\\n\")\r\
\n \r\
\n/system note set note=\"\$logcontent\"" policy=\
ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api \
  start-date=jun/16/2013 start-time=14:44:00