Вопрос по конструкции в команде-скрипте

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

Может кто-нибудь знает как можно получить результат из

/tool snmp-get address=192.168.0.1 oid=.1.3.6.1.2.1.1.6.0

в переменную (лучше) или на худой конец в файл ?

В консоли такая команда работает, по указанному адресу запрашиваются данные указанной OID и выводятся в консоль.

Но вот так работает (скрипт ошибки не выдает и выполняется до конца), но значение не присваивает (переменная а остается пустой):

:local a [/tool snmp-get address=192.168.0.1 oid=.1.3.6.1.2.1.1.6.0]

Также не прокатывает и с выводом в файл:

/file set "Name" contents=[:put [/tool snmp-get address=192.168.0.1 oid=.1.3.6.1.2.1.1.6.0]];

Пишется пустой файл.


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

Вот, что ответили в Микротик-support:

Hello,

V dannij moment njetu takoj vozmozhnostji v skriptah.

Best regards,
Maris B.

--
MikroTik.com

:ne_vi_del:


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

А очень жаль ! Можно было бы через OID из Микротика опрашивать и управлять многими устройствами в сети (кто поддерживает SNMP), а также операционками ...


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

А оказывается можно (Автор Rextended): https://forum.mikrotik.com/viewtopic.ph ... 69#p876969

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

/file remove [find where name="testgetsnmp.txt"]
{
    :local jobid [:execute file=testgetsnmp.txt \
        script="/tool snmp-get tries=3 try-timeout=3s address=192.168.0.1 port=161 version=2c \
        community=public oid=1.3.6.1.4.1.14988.1.1.3.8.0"]
    :put "Waiting the end of process for file testgetsnmp.txt to be ready, max 20 seconds..."
    :global Gltesec 0
    :while (([:len [/sys script job find where .id=$jobid]] = 1) && ($Gltesec < 20)) do={
        :set Gltesec ($Gltesec + 1)
        :delay 1s
        :put "waiting... $Gltesec"
    }
    :put "Done. Elapsed Seconds: $Gltesec\r\n"
    :if ([:len [/file find where name="testgetsnmp.txt"]] = 1) do={
        :local filecontent [/file get [/file find where name="testgetsnmp.txt"] contents]
        :if ([:len $filecontent] = 83) do={:put "No result"; :return ""}
        :local oidstart ([:find $filecontent "\r\n" -1] + 2)
        :local oidend [:find $filecontent " " $oidstart]
        :local typestart ($oidstart + [:find $filecontent "TYPE" -1])
        :local typeend [:find $filecontent " " $typestart]
        :local valuestart ($oidstart + [:find $filecontent "VALUE" -1])
        :local valueend [:find $filecontent " " $valuestart]
        :local getoid [:pick $filecontent $oidstart $oidend]
        :local gettype [:pick $filecontent $typestart $typeend]
        :local getvalue [:pick $filecontent $valuestart $valueend]
        :put "The >$getoid< return >$gettype< value >$getvalue<"
    } else={
        :put "File not created."
    }
}


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

теперь можно напрямую, без записи в файл:

# NEW in Ros 7.8

:put [/tool/snmp-get address=127.0.0.1 oid=1.3.6.1.4.1.14988.1.1.3.8.0 community=public as-value ]
# oid=1.3.6.1.4.1.14988.1.1.3.8.0;type=integer;value=517


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