Структурированный табличный вывод

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Никак не пойму как это работает:

(взято у автора скрипта из viewtopic.php?f=14&t=11609:)

if (($interfaceName = $hostInterface) && ($interfaceName != $bridgeName)) do={
:local printInterface ([ :pick [( $hostInterface." " )] 0 16 ]);
:local printNameMAC ([ :pick [( $hostName." (".$hostMAC.") " )] 0 44 ]);
:local printComment ([ :pick [( $hostComment." " )] 0 30 ]);
:local printIP ([ :pick [( $hostIP." " )] 0 20 ]);
:put ($printInterface." ".$printNameMAC." remark: ".$printComment." ".$printIP." ".$bridgeName);
}

Как автор расчитал количество пробелов между словами в строках в каждом столбце ?

Нет, то есть как работает я понимаю, всё просто. Формируется итоговое слово нужной длины, пиком отсекаются лишние пробелы.

Но ! почему с :put - выводом в термиал это работает, а с :log info нет ?

:log info ($printInterface." ".$printNameMAC." remark: ".$printComment." ".$printIP." ".$bridgeName);


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Вроде разобрался в чем дело. Несмотря на четкое "обрезание" по количеству символов длина формируемых слов в табличных строках выводом :log получается разная. Это связано с тем, что знакоместо символа имеет различную величину и это приводит к смещению столбцов несмотря на одинаковое число символов в каждом. В терминале такого нет там все четко - все символы (любые) имеют равные знакоместа. Это плохо. Получается никак нельзя в логе роутерОС вывести данные в ровные столбцы (скажем выравненные все по левому краю), а в терминале можно - там знакоместо одинаковое для каждого символа.

Или не прав ?

Да... Строки определенной длины в пикселях роутерОС формировать не умеет ...


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Аватара пользователя
podarok66
Модератор
Сообщения: 4358
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

А я давно говорил, что в RouterOs не хватает bash со всякими sed, awk и тому подобным ;;-))) Я бы, наверное, за вариант лицензии с полноценным bash доплатил бы даже.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Ответить