Ошибка в скрипте назначение интерфейсов

Автоматизация при помощи встроенного скриптового языка и RouterOS API
mmm
Сообщения: 12
Зарегистрирован: 04 окт 2018, 11:39

Ошибка в скрипте назначение интерфейсов

Сообщение mmm » 04 окт 2018, 12:00

Доброго времени суток! Ошибка возникла после обновления routeros до 6.42.7 скрипт писал не я и о данунгрейте речи быть не может. Помогите разобраться, собственно сам скрипт:

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

### INT ###
$ipCONF iptmp=($config->3)
:global ether1NAME [/interface ethernet get [ find default-name="ether1" ] name ]
:global ether1 {ip="$ip";netmask="$prefix";gateway=($network+1)}
$ipCONF iptmp=($config->4)
:global ether5NAME [/interface ethernet get ($intCOUNT-1) name]
:global ether5 {ip="$ip";netmask="$prefix";gateway=($network+3)}
:if ( $MODE != "vsat" and $intCOUNT="5" ) do={
	/interface ethernet set [find name="$ether5NAME" ] name="ether$intCOUNT-$ISP5" master-port=none
	:set ether5NAME [/interface ethernet get ($intCOUNT-1) name]
	}
$ipCONF iptmp=($config->5)
:global lanNAME [/ip address get [find network="192.168.88.0"] interface ]
:global lan {ip=($network+1);netmask="$prefix";network="$network";pool="$poolSTART-$poolEND"}
$ipCONF iptmp=($config->6)
:global l2tpNAME "l2tp-$ORG"
:global l2tp {network=($network+1)}
$ipCONF iptmp=($config->7)
:global greNAME "gre-$ORG"
:global gre {ip=($network+2);netmask="$prefix";network="$network"}
собственно ошибка:

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

[[email protected]] /ip address> :if ( $MODE != "vsat" and $intCOUNT="5" ) do={
{... /interface ethernet set [find name="$ether5NAME" ] name="ether$intCOUNT-$ISP5" master-port=none
expected end of command (line 2 column 80)
Спасибо!

Аватара пользователя
Chupaka
Сообщения: 1245
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Ошибка в скрипте назначение интерфейсов

Сообщение Chupaka » 04 окт 2018, 12:06

Параметр "master-port=" убрали в версии 6.42, теперь всё делается через Bridge. Поскольку у вас только none - то просто уберите его из скрипта.

mmm
Сообщения: 12
Зарегистрирован: 04 окт 2018, 11:39

Re: Ошибка в скрипте назначение интерфейсов

Сообщение mmm » 04 окт 2018, 13:16

Вот такая петрушка!

[[email protected]] > $ipCONF iptmp=($config->3)
[[email protected]] > :global ether1NAME [/interface ethernet get [ find default-name="ether1" ] name ]
[[email protected]] > :global ether1 {ip="$ip";netmask="$prefix";gateway=($network+1)}
[[email protected]] > $ipCONF iptmp=($config->4)
[[email protected]] > :global ether5NAME [/interface ethernet get ($intCOUNT-1) name]
no such item
[[email protected]] > :global ether5 {ip="$ip";netmask="$prefix";gateway=($network+3)}
[[email protected]] > :if ( $MODE != "vsat" and $intCOUNT="5" ) do={
{... /interface ethernet set [find name="$ether5NAME" ] name="ether$intCOUNT-$ISP5"
{... :set ether5NAME [/interface ethernet get ($intCOUNT-1) name]
syntax error (line 3 column 6)
[[email protected]] >
caps-man console driver interface ipv6 metarouter partitions ppp radius snmp system user blink import ping redo
certificate disk file ip log mpls port queue routing special-login tool beep export password quit undo
[[email protected]] > }
[[email protected]] > $ipCONF iptmp=($config->5)
[[email protected]] > :global lanNAME [/ip address get [find network="192.168.88.0"] interface ]
[[email protected]] > :global lan {ip=($network+1);netmask="$prefix";network="$network";pool="$poolSTART-$poolEND"}
[[email protected]] > $ipCONF iptmp=($config->6)
[[email protected]] > :global l2tpNAME "l2tp-$ORG"
[[email protected]] > :global l2tp {network=($network+1)}
[[email protected]] > $ipCONF iptmp=($config->7)
[[email protected]] > :global greNAME "gre-$ORG"
[[email protected]] > :global gre {ip=($network+2);netmask="$prefix";network="$network"}
[[email protected]] >

Аватара пользователя
Chupaka
Сообщения: 1245
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Ошибка в скрипте назначение интерфейсов

Сообщение Chupaka » 04 окт 2018, 14:35

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

/interface ethernet get ($intCOUNT-1) name
В скриптах обращаться к интерфейсам по номеру нельзя, результат непредсказуемый. А судя по первому посту, переменная intCOUNT у вас вообще не инициализируется, поэтому я даже угадать затрудняюсь, что там должно происходить...

mmm
Сообщения: 12
Зарегистрирован: 04 окт 2018, 11:39

Re: Ошибка в скрипте назначение интерфейсов

Сообщение mmm » 04 окт 2018, 15:17

1111
Последний раз редактировалось mmm 07 окт 2018, 13:13, всего редактировалось 1 раз.

Аватара пользователя
Chupaka
Сообщения: 1245
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Ошибка в скрипте назначение интерфейсов

Сообщение Chupaka » 04 окт 2018, 19:14

В общем, раньше в скриптах всё, что использовало команду print, работало кое-как и не всегда, а сейчас, видимо, это вообще на всякий случай закрыли :)

Полотенце сильно большое, чтобы с наскоку разобраться, чего же оно там хочет. Если просто найти последний интерфейс на роутере - то можно сделать как-то так:

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

:global ether5NAME [/interface ethernet get ($intCOUNT-1) name]
заменить на

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

:local i5; :foreach i in=[/interface ethernet find] do={ :set i5 $i }; :global ether5NAME [/interface ethernet get $i5 name];
, а

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

:set ether5NAME [/interface ethernet get ($intCOUNT-1) name]
- на

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

:set ether5NAME "ether$intCOUNT-$ISP5"
Ну и использовать global-переменные в таком количестве без надобности - тоже так себе подход...

mmm
Сообщения: 12
Зарегистрирован: 04 окт 2018, 11:39

Re: Ошибка в скрипте назначение интерфейсов

Сообщение mmm » 05 окт 2018, 11:11

День добрый Chupaka! ошибок при заливке скрипта нет но результат нулевой. По идее скрип должен отключить дефолтную конфигурацию и выдать новый ИП этого почему то не происходит. После перезагрузки адрес не получаю a Neighbors пишет что 192.168.88.1. Хэлп!!!!!

Аватара пользователя
Chupaka
Сообщения: 1245
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Ошибка в скрипте назначение интерфейсов

Сообщение Chupaka » 05 окт 2018, 11:54

Куда выдать? От кого не получаю? Зачем перезагрузка?

mmm
Сообщения: 12
Зарегистрирован: 04 окт 2018, 11:39

Re: Ошибка в скрипте назначение интерфейсов

Сообщение mmm » 05 окт 2018, 12:11

мои действия:
-New terminal
-копипаст скрипта
-reboot
и....вуаля микротик должен работать но на деле после перезагрузки ИП адрес не получаю a Neighbors пишет что 192.168.88.1

Аватара пользователя
Chupaka
Сообщения: 1245
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Ошибка в скрипте назначение интерфейсов

Сообщение Chupaka » 05 окт 2018, 13:06

И ошибок при копипасте никаких нет?

Ответить