пятница, 15 августа 2014 г.

Вывод только нужного значения в консоли Mikrotik (использование put, get, find)

Вводная: Необходимо вывести только одно единственное значение в консоль. Это может пригодиться в разных случаях, сходу приходят на ум -
  1. Создание писем для отчётности системному администратору.
  2. Быстрый просмотр значений в консоли (когда не надо смотреть весь вывод, а нужно быстро посмотреть только нужное значение.
  3. Когда надо отправить SMS-алерт и мы ограничены в числе символов.
  4. Когда мы управляем роутером через плагин SSH или API, и нам нужно передать в программу нужное значение (для того чтобы не парсить полный вывод, а сразу получить нужное)
  5. Использование в скриптовом языке
Думаю существуют ещё разные кейсы использования, если вы придумали, то опишите их в комментариях.

Решение: Решение достаточно просто и состоит в использовании двух команд - put и get. Данные команды интуитивно понятны (особенно для тех кто хоть немного знает английский). Смысл данных команд в том, что get получает значение, а put его выводит. 

Пример: Покажем на примере вывода времени непрерывной работы роутера (аптайма). Обычно его смотрят командой system resource print и вывод получается такой (на скриншоте), с кучей ненужных нам в данный момент значений - 

Но при небольшой модификации команды до  put [system resource get uptime] вывод становится гораздо более удобным.
И сразу видно отличие в размере вывода и скорости восприятия :)

Также с помощью связки данных команд и использование дополнительно команды find можно получать гораздо удобнее вывод - (для примера узнаем MAC адрес по известному IP) 

Для начала введём ip arp

А теперь - put [ip arp get [find address=192.168.8.1] mac-address]
Это особенно полезно при наличии больших списков, в которых по другому достаточно долго пришлось бы искать. То есть find необходим когда в выводе возможно несколько значений, но нам нужно получить значение только какого-нибудь одного.








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