функции добавления/изменения комментария скрипта и задания Планировщика

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

Приветствую всех !

Написал простенькие функции установки/изменения комментария скриптов репозитория и заданий Планировщика Микротик.

Вот функция установки/изменения комментария скрипта:

Код: Выделить всё

# функция установки комментария скрипту с заданным именем
# использование: [$Funcsetcomment $1 $2]
# $1 - имя скрипта
# $2 - текст комментария
# если $2 пустой - происходит стирание комментария скрипта (замена на пустой)

:global Funcsetcomment
:set Funcsetcomment do={
:if ([:len $0]!=0) do={
do {
# установить комментарий скрипту в заданным именем
/system script set comment=$2 [find name=$1]
} on-error={:return "Error function $0"}
:return "ОК"
  }
}

# :log warning [$Funcsetcomment  "muzic_fly" "мелодия удачи"]
# :log warning [$Funcsetcomment  "muzic_fly"]
Функция работает нормально.

А вот аналогичная функция установки/изменения комментария задания Планировщика:

Код: Выделить всё

# функция установки комментария заданию планировщика с заданным именем
# использование: [$FuncsetcommentSched $1 $2]
# $1 - имя задания планировщика
# $2 - текст комментария
# если $2 пустой - происходит стирание комментария (замена на пустой)

:global FuncsetcommentSched
:set FuncsetcommentSched do={
:if ([:len $0]!=0) do={
do {
# установить комментарий заданию Планировщика 
/system scheduler set comment=$2 [find name=$1]
} on-error={:return "Error function $0"}
:return "ОК"
  }
}

# :log warning [$Funcsetcomment Sched "test" "melody"]
# :log warning [$Funcsetcomment Sched "test"]
которая работает только из Терминала !

Кто-нибудь знает почему ? Косяк разработчиков РОС ? или специально придуманная фишка ?
Последний раз редактировалось Sertik 12 окт 2021, 16:22, всего редактировалось 1 раз.


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

Прикольно, что 55 человек посмотрело и никто не заметил ошибки в примерах вызова второй функции :-) :

:log warning [$Funcsetcomment Sched "test" "melody"]
:log warning [$Funcsetcomment Sched "test"]

В имя функции закрался пробел, надо так:

:log warning [$FuncsetcommentSched "test" "melody"]

А сама функция полностью рабочая.


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

Вот универсальная функция установки комментария скрипту репозитория или заданию Планировщика (то есть "два в одном"):

Код: Выделить всё

#
#
# Функция установки комментария скрипту или Планировщику с заданным именем
#       by Sertik 12/10/2021
#
# использование: [$Funcsetcomment $1 $2 $3]
# $1 - кому устанавливаем комментарий "scheduler" (заданию планировщика) или "script" (скрипту)
# $2 - имя задания/скрипта
# $3 - текст комментария
# если $3 не задан или пустой  - происходит стирание комментария скрипта (замена на пустой)

# при нормальном завершении функция возвращает "OK", при ошибках - текст соответствующих ошибок

        :global Funcsetcomment
        :set Funcsetcomment do={
               :if ([:len $0]!=0) do={
               if (($1="scheduler") or ($1="script")) do={
               # проверим есть ли в репозитории скрипт с указанным именем
                    :if ([:len [[:parse "/system $1 find name=\"$2\""]]]!=0) do={
                       do {
                                 # установить комментарий скрипту c заданным именем
                                  [[:parse "/system $1 set comment=\"$3\" [find name=\"$2\"]"]]
                                 } on-error={:return "Error function $0"}
                       :return "ОК"
     } else={:return "ERROR function $0 script $2 not find in repository or scheduler"}
   } else={:return "ERROR function $0 bad parameter $1"}
  }
}

# :log warning [$Funcsetcomment  "scheduler" "test2" "комментарий1"]
# :log warning [$Funcsetcomment  "script "muzic_fly"]
Для тех, кто изучает скрипты интересным должно быть решение в строках

:if ([:len [[:parse "/system $1 find name=\"$2\""]]]!=0) do={

и [[:parse "/system $1 set comment=\"$3\" [find name=\"$2\"]"]],

где в зависимости от $1 сначала собирается, а потом исполняется нужная строка команды работы или со скриптом или с заданием планировщика

Может кому пригодится.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить