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

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

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

Сообщение mmm »

Доброго времени суток! Ошибка возникла после обновления 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"}
собственно ошибка:

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

[admin@MikroTik] /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
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Параметр "master-port=" убрали в версии 6.42, теперь всё делается через Bridge. Поскольку у вас только none - то просто уберите его из скрипта.
mmm
Сообщения: 12
Зарегистрирован: 04 окт 2018, 11:39

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

Сообщение mmm »

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

[admin@MikroTik] > $ipCONF iptmp=($config->3)
[admin@MikroTik] > :global ether1NAME [/interface ethernet get [ find default-name="ether1" ] name ]
[admin@MikroTik] > :global ether1 {ip="$ip";netmask="$prefix";gateway=($network+1)}
[admin@MikroTik] > $ipCONF iptmp=($config->4)
[admin@MikroTik] > :global ether5NAME [/interface ethernet get ($intCOUNT-1) name]
no such item
[admin@MikroTik] > :global ether5 {ip="$ip";netmask="$prefix";gateway=($network+3)}
[admin@MikroTik] > :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)
[admin@MikroTik] >
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
[admin@MikroTik] > }
[admin@MikroTik] > $ipCONF iptmp=($config->5)
[admin@MikroTik] > :global lanNAME [/ip address get [find network="192.168.88.0"] interface ]
[admin@MikroTik] > :global lan {ip=($network+1);netmask="$prefix";network="$network";pool="$poolSTART-$poolEND"}
[admin@MikroTik] > $ipCONF iptmp=($config->6)
[admin@MikroTik] > :global l2tpNAME "l2tp-$ORG"
[admin@MikroTik] > :global l2tp {network=($network+1)}
[admin@MikroTik] > $ipCONF iptmp=($config->7)
[admin@MikroTik] > :global greNAME "gre-$ORG"
[admin@MikroTik] > :global gre {ip=($network+2);netmask="$prefix";network="$network"}
[admin@MikroTik] >
Аватара пользователя
Chupaka
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

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

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

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

Сообщение mmm »

1111
Последний раз редактировалось mmm 07 окт 2018, 13:13, всего редактировалось 1 раз.
Аватара пользователя
Chupaka
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

В общем, раньше в скриптах всё, что использовало команду 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 »

День добрый Chupaka! ошибок при заливке скрипта нет но результат нулевой. По идее скрип должен отключить дефолтную конфигурацию и выдать новый ИП этого почему то не происходит. После перезагрузки адрес не получаю a Neighbors пишет что 192.168.88.1. Хэлп!!!!!
Аватара пользователя
Chupaka
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Куда выдать? От кого не получаю? Зачем перезагрузка?
mmm
Сообщения: 12
Зарегистрирован: 04 окт 2018, 11:39

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

Сообщение mmm »

мои действия:
-New terminal
-копипаст скрипта
-reboot
и....вуаля микротик должен работать но на деле после перезагрузки ИП адрес не получаю a Neighbors пишет что 192.168.88.1
Аватара пользователя
Chupaka
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

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

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

Сообщение mmm »

Думаю что нет. Проверил концы строк пробелов нет
Аватара пользователя
Chupaka
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Ну, команда, добавляющая LAN-адрес - вот тут:

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

/ip address {
	remove [find address="$lanIP$lanMASK"]
	add address="$lanIP$lanMASK" interface="$lanNAME"
Можно вывести в Терминал, что же она пытается добавить:

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

/ip address {
	:put "Adding $lanIP$lanMASK";
	remove [find address="$lanIP$lanMASK"]
	add address="$lanIP$lanMASK" interface="$lanNAME"
И посмотреть, что именно он в этот момент добавляет.
mmm
Сообщения: 12
Зарегистрирован: 04 окт 2018, 11:39

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

Сообщение mmm »

Скорее всего первую строку...других мыслей нет
Последний раз редактировалось mmm 07 окт 2018, 13:14, всего редактировалось 1 раз.
Аватара пользователя
Chupaka
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Это сейчас о чём было?.. Я, вроде, про другое говорил
mmm
Сообщения: 12
Зарегистрирован: 04 окт 2018, 11:39

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

Сообщение mmm »

Сори, автор скрипта в данный момент недоступен а микротики надо заставить работать прошу помочь мне, буду очень благодарен! Может Вайбер?
Аватара пользователя
Chupaka
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Что Вайбер? Я же предложил выше вставить команду :put в код, посмотреть, что там творится при запуске
mmm
Сообщения: 12
Зарегистрирован: 04 окт 2018, 11:39

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

Сообщение mmm »

Прошло без ошибок, но результата не дало Микротик не рабочий
Последний раз редактировалось mmm 07 окт 2018, 13:15, всего редактировалось 2 раза.
Аватара пользователя
Chupaka
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Где результат отработки скрипта? Он сразу после ":put ***" должен вывести значение.
mmm
Сообщения: 12
Зарегистрирован: 04 окт 2018, 11:39

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

Сообщение mmm »

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

MMM      MMM       KKK                          TTTTTTTTTTT      KKK
  MMMM    MMMM       KKK                          TTTTTTTTTTT      KKK
  MMM MMMM MMM  III  KKK  KKK  RRRRRR     OOOOOO      TTT     III  KKK  KKK
  MMM  MM  MMM  III  KKKKK     RRR  RRR  OOO  OOO     TTT     III  KKKKK
  MMM      MMM  III  KKK KKK   RRRRRR    OOO  OOO     TTT     III  KKK KKK
  MMM      MMM  III  KKK  KKK  RRR  RRR   OOOOOO      TTT     III  KKK  KKK

  MikroTik RouterOS 6.43.2 (c) 1999-2018       http://www.mikrotik.com/
Последний раз редактировалось mmm 07 окт 2018, 13:15, всего редактировалось 1 раз.
Аватара пользователя
Chupaka
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Прячьте код под тег [code]

Вижу, в новой версии комментарий "default configuration" сменили на "defconf", поэтому 192.168.88.1 у вас не выключается, хотя 172.... добавился нормально. Измените комментарий в скрипте.
mmm
Сообщения: 12
Зарегистрирован: 04 окт 2018, 11:39

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

Сообщение mmm »

Ничего я не менял! :-( и "defconf" в скрипте не нашел, к сожалению
менять здесь?

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

/ip dhcp-server {
	:local o [find name="default" ]
	:if ([:len $o] != 0) do={ remove $o }
	}
/ip pool {
	:local o [find name="default-dhcp"]
	:if ([:len $o] != 0) do={ remove $o }
Аватара пользователя
Chupaka
Сообщения: 4095
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Меняли разработчики из компании MiktoTik, поэтому вам надо в скрипте comment="default configuration" заменить на comment="defconf"
mmm
Сообщения: 12
Зарегистрирован: 04 окт 2018, 11:39

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

Сообщение mmm »

Огромный респект за помощ, все заработало!!!!!!!!!!!