Jump to content

Recommended Posts

Posted (edited)

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

 

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.