Jump to content
Калькуляторы

script error: no such item (4)

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

 

Есть скрипт на удаление соединения 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.

Edited by Art_isT

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this