Автоматизация при помощи встроенного скриптового языка и RouterOS API
zon2004
Сообщения: 7 Зарегистрирован: 26 июн 2019, 11:44
Сообщение
zon2004 » 31 май 2020, 16:11
Подскажите пожалуйста, хочу поправить скрипт род контроля, но теперь по доступности порта. :local myFunc [system telnet 192.168.2.23 80]; :put [:len $myFunc]. Хотел сделать на ответе телнета, но почему то не могу с этим ответом ничего сделать.
ответ приходит вида
Connecting to 192.168.2.23
Connected to 192.168.2.23
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>
Remote closed connection: 192.168.2.23
Welcome back!
Chupaka
Сообщения: 4157 Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Сообщение
Chupaka » 31 май 2020, 21:18
Эм-м-м... Вряд ли вы telnet сможете в скрипте использовать. Может, всё-таки /tool fetch?..
zon2004
Сообщения: 7 Зарегистрирован: 26 июн 2019, 11:44
Сообщение
zon2004 » 31 май 2020, 22:57
Chupaka писал(а): ↑ 31 май 2020, 21:18
Эм-м-м... Вряд ли вы telnet сможете в скрипте использовать. Может, всё-таки /tool fetch?..
Подскажите пожалуйста как можно использовать его,
Chupaka
Сообщения: 4157 Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Сообщение
Chupaka » 01 июн 2020, 16:54
zon2004
Сообщения: 7 Зарегистрирован: 26 июн 2019, 11:44
Сообщение
zon2004 » 06 июн 2020, 13:31
Подскажите пожалуйста, почему не работает, вот кусок кода, когда доступен ресурс - все работает, когда он не доступен - не работает этот скрипт
Код: Выделить всё
#########################################
:local ScOnTime "9:00";
:local ScOffTime "17:30";
:local TimeWorkTV "120"
#########################################
:global WorkTime
:global CurrentTime [/system clock get time];
:local workday [:toarray "mon,tue,wed,thu,fri"]
:global CheckONTV
:global CheckOFFTV
:global FuncTV [/tool fetch url=http://192.168.2.23:52323/MediaRenderer.xml as-value output=user]
:if ([:len $FuncTV] != 0) do={
:set CheckOFFTV "0"
:set CheckONTV ($CheckONTV+1)
:if ($workday ~ $result) do={
:if (($CurrentTime > $ScOnTime) and ($CurrentTime < $ScOffTime)) do={
:set WorkTime ($WorkTime+1)
:if ($WorkTime >= $TimeWorkTV) do={
/interface disable eth2-lan
}
}
}
} else={
:set CheckOFFTV ($CheckOFFTV+1)
:set CheckONTV "0"
}
т.е не работает else. да и такое ощущения что этот кусок и совсем не работает если не доступен ресурс
Chupaka
Сообщения: 4157 Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Сообщение
Chupaka » 09 июн 2020, 13:37
Ошибка /tool fetch "ломает" скрипт, поэтому надо сделать обработчик-заглушку: заменить
Код: Выделить всё
:global FuncTV [/tool fetch url=http://192.168.2.23:52323/MediaRenderer.xml as-value output=user]
на
Код: Выделить всё
:do { :global FuncTV [/tool fetch url=http://192.168.2.23:52323/MediaRenderer.xml as-value output=user] } on-error={}
zon2004
Сообщения: 7 Зарегистрирован: 26 июн 2019, 11:44
Сообщение
zon2004 » 09 июн 2020, 20:48
спасибо большое