понедельник, 21 декабря 2015 г.

Подсветка синтаксиса скриптов RouterOS в сторонних редакторах.

  Когда приходится писать объемные скрипты в стандартном редакторе MikroTik встроенном в RouterOS это делать очень неудобно. Уследить за синтаксисом без "подсветки" нереально. Для примера приведу два скрина одного и того же скрипта в стандартном редакторе и в стороннем редакторе с подсветкой синтаксиса RouterOS:


Стандартный редактор скриптов RouterOS.
Редактор Sublime Text + Package Mikrotik​Script.

  Для этого энтузиасты создали дополнения и плагины для современных распространенных текстовых редакторов. В этой статье я опишу несколько из них.

Sublime Text

официальный сайт: http://www.sublimetext.com/
тема на офф. форуме MikroTik: http://forum.mikrotik.com/viewtopic.php?f=9&t=81868

   Для начала скачиваем сам редактор с официального сайта и устанавливаем на компьютер. Есть два способа установки пакетов. 
  Первый: 
Устанавливаем Package Control, для этого выбираем в меню View > Show Console или нажимаем "ctrl+`". Вводим в консоль скрипт для Sublime Text v2:
import urllib2,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler()) ); by = urllib2.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); open( os.path.join( ipp, pf), 'wb' ).write(by) if dh == h else None; print('Error validating download (got %s instead of %s), please try manual install' % (dh, h) if dh != h else 'Please restart Sublime Text to finish installation')
Для  Sublime Text v3:
import urllib.request,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
  Актуальность этого кода можно посмотреть тут: https://packagecontrol.io/installation. После установки нужно перезапустить Sublime Text.
  В главном окне нажимаем  Preferences > Package Control или "Ctrl + Shift + P", выбираем пункт Package Control: Install Package, выбираем и устанавливаем пакет MikrotikScript. О пакете можно почитать здесь. Пакет установлен.
  Второй:
  Просто скачать пакет представленный в ссылке выше (доп. пакет), разархивировать в папку MikrotikScript и подкинуть его в путь хранения пакетов. Его можно посмотреть в Preferences > Browse Packages, для Windows 7 это "C:\Users\%username%\AppData\Roaming\Sublime Text 2\Packages\". Перезапустить Sublime Text, пакет установлен.

  После установки в меню View > Syntax выбираем MikrotikScript:
  
После этого можно работать:


Notepad++
  
официальный сайт: https://notepad-plus-plus.org/
тема на офф. форуме MikroTik: http://forum.mikrotik.com/viewtopic.php?f=9&t=59761
доп. пакет 2 (расширенный): https://drive.google.com/open?id=0B6LuezGzvlJbMGNmWkZnTmxOQVU

  Скачиваем с офф. сайта и устанавливаем редактор Notepad++. Скачиваем доп. пакет 1, или доп. пакет 2 (расширенный) со ссылки выше. Я рекомендую второй, там более богатый синтаксис и расширенная цветовая гамма. Открываем Notepad ++,  нажимаем Опции > Импортировать > Импортировать Тему, импортируйте файл XML, который вы скачали. Откройте сценарий .rsc и подсветка синтаксиса будет видна. Так же, если сценарий имеет другое расширение, вы всегда можете выбрать тему в меню "Синтаксисы" > RouterOS.



TextPad

официальный сайт: http://www.textpad.com/
тема на офф. форуме MikroTik: http://forum.mikrotik.com/viewtopic.php?f=9&t=59761
доп. пакет: https://drive.google.com/file/d/0B6LuezGzvlJbSzVYRDh4SnRpRHc/view?usp=sharing

  Так как синтаксис написан под 5 версию программы, загружаем TextPad 5 из архива, устанавливаем. В версии TextPad 8 запустить синтаксис мне не удалось. Загружаем по ссылке "доп. пакет" синтаксис ROS. Открываем  TextPad 5, идем в Configure > Preferences > Folders. Нас интересует поле Systax. Запоминаем путь, и по этому пути кладем наш разархивированный "routerboard.syn". Перезапускаем программу, открываем Configure > New Document Class. Откроется мастер. В поле Ducument class name вводим имя класса (любое), далее в Class members расширение "*. rsc", в следующем окне ставим галочку "Enable syntax highlighting" и в поле Syntax definition file выбираем наш routerboard.syn. Все, для файлов *. rsc TextPad ассоциировал синтаксис. 


  Если просто скопировать скрипт, в меню View > Document Properties > Syntax можно выбрать наш синтаксис routerboard.syn, и скрипт будет подсвечен.


  На этом все. Знаете еще редакторы с доступным синтаксисом RouterOS - прошу в комментарии.

Подписаться на новые статьи.

4 комментария:

  1. Для Атома есть великолепная подсветка синтаксиса https://atom.io/packages/language-routeros-script

    ОтветитьУдалить
  2. Все сделал по статье, но в Notepad++ не заработало. В каталоге тем появился RouterOS-Syntax-Highlighter.xml но подсветки синтаксиса нет. В чем причина,подскажите?

    ОтветитьУдалить
    Ответы
    1. Не могу подсказать, в Notepad++ проблем не возникало вообще. Все взлетело сразу. Пробуйте, работают ли другие расширения для этого редактора.

      Удалить