Jump to content

Проблем с queue скрипт и x86 mt


terminated

Recommended Posts

Здравейте , ето и проблема - скрипта си работи на рутерборд , но на пц стига до някъде и дава таймаут !?!?, когато няма никакъв трафик на машината успява да ги добави всичките. Сложих лан карта само за телнет скрипта , която е вързана директно за машината на която се изпълнява , но проблема си остава.

Ето и скрипта:

#!/usr/bin/perl

use Data::Dumper;

use Net::Telnet ();

$telnet1 = new Net::Telnet (

Host => "1.1.1.2",

Timeout => 20,

Dump_log => "./log",

Prompt => '/\[.+\] > $/');

$telnet1->login("user", "passwor");

my $sth; my @row; my @subnet; my $gateway; my $login; my $ip; my $speed; my $block;

open(DATA, "</var/digital/sdp_INT/SDP_S15.TXT");

while (<DATA>)

{

        my($line) = $_;

        chomp($line);

        if ($line =~ /([a-zA-Z0-9\_-]+)\|(\d)\|(\d+\.\d+\.\d+\.\d+)\|(\d+)/) {

                $login = $1;

                $block = $2;

                $ip = $3;

                $speed = $4*1000;

              if ($block == '0')

              {

              $telnet1->cmd("/queue simple add name=$login target-address=$ip max-limit=$speed/$speed interface=all place-before=all");

              }

              if ($block == '1')

              {

              $telnet1->cmd("/queue simple remove $login");

              }

        }

}

$telnet1->close;

Адрес на коментара
Сподели в други сайтове

  • Администратор

С коя версия на МТ?

сериозно ли ползваш 1.1.1.2 за свръзка

Харесай поста ^^^
acer.gif htc.gifsigpic4024_2.gif

Форумът е за взаимопомощ а не за свършване на чужда работа


ɹɐǝɥ uɐɔ noʎ ǝɹoɯ ǝɥʇ 'ǝɯoɔǝq noʎ ɹǝʇǝınb ǝɥʇ

Адрес на коментара
Сподели в други сайтове

Пробвах първо с 4.13 , а сега съм с последната бета и при двете резултата е един. С лиценз левел 4 съм ,ако има значение

Адрес на коментара
Сподели в други сайтове

  • Администратор

какво показва лога на МТ ?

Харесай поста ^^^
acer.gif htc.gifsigpic4024_2.gif

Форумът е за взаимопомощ а не за свършване на чужда работа


ɹɐǝɥ uɐɔ noʎ ǝɹoɯ ǝɥʇ 'ǝɯoɔǝq noʎ ɹǝʇǝınb ǝɥʇ

Адрес на коментара
Сподели в други сайтове

Ами сега изтрих всичките queue (180) след пускането на 160-тото даде timeout и след няколко пускания на скрипта продалжават да са 160.. В лога от последвалите пускания на скрипта има само user admin log in / log out

Адрес на коментара
Сподели в други сайтове

  • Администратор

Има вариант през API но там не вдявам много

освен ако не ползваш вградения usermanager

я разясни целевото приложение на скрипта и периода на изпълнението

защото микротика може да прави същите неща и без външна намеса 

http://mikrotik-bg.net/index.php?topic=2168.0

http://mikrotik-bg.net/index.php?topic=2677.0

Харесай поста ^^^
acer.gif htc.gifsigpic4024_2.gif

Форумът е за взаимопомощ а не за свършване на чужда работа


ɹɐǝɥ uɐɔ noʎ ǝɹoɯ ǝɥʇ 'ǝɯoɔǝq noʎ ɹǝʇǝınb ǝɥʇ

Адрес на коментара
Сподели в други сайтове

И аз се чудих на API-то , но не вдянах хич  :-\ . Иначе не ползвам вградения мениджър ,а user-ите ги взимам от един текстов файл и общо взето неплатилите ги спирам , като им изтрия queue-to и всички остават в един общ малъй шейпър...

Адрес на коментара
Сподели в други сайтове

  • Администратор

http://forum.mikrotik.com/viewtopic.php?f=9&t=22744

чета тук и не зацепвам дано имаш по голям късмет с това API 

аз бих предпочел директно блокиране по мак адрес  :o

а и все още обичам да цъкам с мишката, някак по визуално ми е 

Харесай поста ^^^
acer.gif htc.gifsigpic4024_2.gif

Форумът е за взаимопомощ а не за свършване на чужда работа


ɹɐǝɥ uɐɔ noʎ ǝɹoɯ ǝɥʇ 'ǝɯoɔǝq noʎ ɹǝʇǝınb ǝɥʇ

Адрес на коментара
Сподели в други сайтове

Това апи не е за мен  :o Идея за скрипт подобен на моя за блокиране по мак ? Горе-долу ми е ясно как може да стане , но как да блокирам макове , които не са ми в базата ?

Адрес на коментара
Сподели в други сайтове

Пак закъсах .. предния проблем се оказа от "place-before=all". Реших да си блокирам юзерите по мак адрес и си преправих скрипта по този начин:

#!/usr/bin/perl

use Net::Telnet ();

$telnet1 = new Net::Telnet (

Host => "1.1.1.2",

Timeout => 20,

Prompt => '/\[.+\] > $/');

$telnet1->login("user", "pass");

my $ip; my $block; my $mac;

open(DATA, "</var/digital/sdp_INT/SDP_S15.TXT");

while (<DATA>)

{

        my($line) = $_;

        chomp($line);

        if ($line =~ /([a-zA-Z0-9\_-]+)\|(\d)\|(\d+\.\d+\.\d+\.\d+)\|(\d+)\|([a-zA-Z0-9\_:-]+)/) {

                $block = $2;

                $ip = $3;

                $mac = $5;

              if ($block == '0')

              {

              $telnet1->cmd("/ip arp add address=$ip mac-address=$mac interface=339");

              }

              if ($block == '1')

              {

              $telnet1->cmd("/ip arp add address=$ip mac-address=01:01:01:01:01:01 interface=339");

              }

        }

}

$telnet1->close;

Скрипта си работи добре , НО по този начин , ако се смени мак адреса на съществуващ юзер микротика не го replace,а си остава старият.

EDIT: май намериш решението с - /ip arp set [find address=()] mac-address=

Адрес на коментара
Сподели в други сайтове

И отново за пореден път същият проблем  :) /ip arp add address=$ip mac-address=$mac interface=339 .. никакъв проблем 960 арпа от раз , /ip arp set [find address=()] mac-address= 10-тина правила и любимия timeout..

Адрес на коментара
Сподели в други сайтове

  • Администратор

Защо не го пренапишеш тоя скрипт да си се пуска директно в машината не отвън

Харесай поста ^^^
acer.gif htc.gifsigpic4024_2.gif

Форумът е за взаимопомощ а не за свършване на чужда работа


ɹɐǝɥ uɐɔ noʎ ǝɹoɯ ǝɥʇ 'ǝɯoɔǝq noʎ ɹǝʇǝınb ǝɥʇ

Адрес на коментара
Сподели в други сайтове

Създайте нов акаунт или се впишете, за да коментирате

За да коментирате, трябва да имате регистрация

Създайте акаунт

Присъединете се към нашата общност. Регистрацията става бързо!

Регистрация на нов акаунт

Вход

Имате акаунт? Впишете се оттук.

Вписване
  • Потребители разглеждащи страницата   0 потребители

    • No registered users viewing this page.
×
×
  • Създай нов...

Important Information

By using this site, you agree to our Terms of Use.