Mikrotik script error: no such item (4)

Juniper/Cisco/Allied Telesis/D-Link/Zyxel
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
argenon
проходил мимо
Сообщения: 2
Зарегистрирован: 2013-12-06 9:36:30

Mikrotik script error: no such item (4)

Непрочитанное сообщение argenon » 2013-12-06 9:38:12

Проблема со скриптом, бьюсь уже неделю не могу понять причину проблемы.

Есть скрипт на удаление соединения sip:

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

:local pingcount "4";
:local pingip "8.8.8.8";
:local voiceGwIp "10.1.2.250:5060";
:local replyHost;
:local gateway;   
:local gatewayDn;
:local activeReply;
:local activeRoute;
:local routeDn;
:local voiceCon;

:local pingresult [/ping $pingip count=$pingcount];
:if ($pingresult > 0) do={
    :set activeRoute [/ip route find where active routing-mark=tel];
    :if ($activeRoute = "") do={
        :local mes1 "Clear-sip-connections: route is not found.";
    }  
    :set routeDn [/ip route find where routing-mark=dn];
    :if ($routeDn = "") do={
        :local mes2 "Clear-sip-connections: route Dn is not found.";
    }  
    :set voiceCon [/ip firewall connection find where src-address=$voiceGwIp];
    :if ($voiceCon = "") do={
        :local mes3 "Clear-sip-connections: connection is not found.";
    }
    :if (($activeRoute != "" ) && ($routeDn != "" ) && ($voiceCon != "" )) do={
        :set gateway [/ip route get $activeRoute gateway];   
        :set gatewayDn  [/ip route get $routeDn gateway];
        :set activeReply [/ip firewall connection get $voiceCon reply-dst-address];
         
        :if ($gateway = $gatewayDn) do={
            :set replyHost "xxx.xxx.xxx.xxx:5060";
        } else={
            :set replyHost "yyy.yyy.yyy.yyy:5060";
        }
        :if ($activeReply != $replyHost) do={
            /ip firewall connection remove $voiceCon;
            :log warning ("Clear-sip-connections: clearing connection src-address:$voiceGwIp, reply-dst-address:$activeReply"); 
        } else={
            :nothing;
        }
    } else={
        :log warning ("$mes1 $mes2 $mes3");
    }
} else={    
    :log warning ("Clear-sip-connections: no ping");
}
Скрипт сам по себе работает (запускается через планировщик каждые 30 сек.), соединение убивает, но иногда в лог пишет "script error: no such item (4)".
Выяснил, что проблема происходит на этом участке:

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

:set voiceCon [/ip firewall connection find where src-address=$voiceGwIp];
Но почему он иногда выдает ошибку понять не могу, так это соединение висит постоянно, к тому же пробовал задавать заведомо неверный src-address, на выходе получаю пустой результат.
Версия системы 6.6.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35119
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Mikrotik script error: no such item (4)

Непрочитанное сообщение Alex Keda » 2014-01-30 22:36:10

дебажить надо
Убей их всех! Бог потом рассортирует...

argenon
проходил мимо
Сообщения: 2
Зарегистрирован: 2013-12-06 9:36:30

Re: Mikrotik script error: no such item (4)

Непрочитанное сообщение argenon » 2014-01-31 5:52:01

Как, с помощью чего?