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

Mikrotik и его скрипты очередной ламерский вопрос...

Пытаюсь писать отключалку юзеров. Создаю скрипт с командами вида /ip firewall address-list disable 10 - не работает. То же самое, запущенное из терминала (под тем же пользователем, естественно, то есть с правами всё хорошо) работает, а в скрипте - ноль эмоций. Пробовал писать другие команды в нём же (скажем, /user add ...) - работает.

В мануале раздел Scripting Host зачитал до дыр - не могу найти, в чём проблема. Что может быть?

Share this post


Link to post
Share on other sites

У мня долго не получалось со скриптом, задча простая - удалить все привязки, потом поставить новые (неуправлямые сегменты)

В конце концов плюнул, комманды выполеяю по ssh с авторизацией по ключам комманды /ip arp ... , а перед этим дергаю скрипт который удалит все привязки.

 

Более простого и красивого решениея не нашел, это около года уже работает.

А все началось с того, что надо было за ночь роутер собрать, при этом н было винта куда посавить линукс, только ide-flash )

 

[admin@odyssey] > /system script print
0 name="arp-rem3" owner="admin" policy=ftp,reboot,read,write,policy,test,winbox,password last-started=nov/08/2008 18:31:28 run-count=6753
   source=/ip arp rem [/ip arp find dynamic=no]

 

Долго не мог разобраться с таким простым примером - уже правда не помню почему, но ощущение гимморойности осталось - возможно Вам поможет.

 

PS

Думаю, из местных nuclearcat должен знать

Edited by sirmax

Share this post


Link to post
Share on other sites

Ну, у меня политика несколько другая: при отключении привязки arp, dhcp остаются, адрес только выпадает из allowed-листа для правила, которое разрешает tcp и udp.

Share this post


Link to post
Share on other sites
Ну, у меня политика несколько другая: при отключении привязки arp, dhcp остаются, адрес только выпадает из allowed-листа для правила, которое разрешает tcp и udp.
Ну то старая схема )

А новая схема совсем другая - аналогично Вашей, на свиче все режется кроме "ходи на биллинг, плати бабки", а dhcp-snooping не дает менять IP =)

Классика )

Share this post


Link to post
Share on other sites

Накопал ответ на свой вопрос. Оказывается, disable/enable для адрес-листов работает только на основе 'динамического' списка, который формируется по предварительной команде /ip firewall address-list print. То есть скриптом это не будет работать в принципе)

 

Обратил правило в файрволле, вместо разрешающего листа сделал запрещающий, записи в него скриптом добавляю. Вроде всё как надо, всем спасибо.

Edited by Барагоз

Share this post


Link to post
Share on other sites
Накопал ответ на свой вопрос. Оказывается, disable/enable для адрес-листов работает только на основе 'динамического' списка, который формируется по предварительной команде /ip firewall address-list print. То есть скриптом это не будет работать в принципе)

это еще почему, если заходишь по ssh на него и выполняешь команду, все работает. а вот когда скриптом - нет.

 

Обратил правило в файрволле, вместо разрешающего листа сделал запрещающий, записи в него скриптом добавляю. Вроде всё как надо, всем спасибо.

 

а можно немного поподробнее?

 

у мну такаяже проблема, я себе уже весь мосх сломал((( а скрипт на удаление так и не работает( писал в саппорт микротика, там сказали что на 2.9.51 все должно работать, вот теперь думаю ставить старую версию, или же продолжать ковырять 3.13

Edited by starchik

Share this post


Link to post
Share on other sites

а вы учитывали подкорректированный язык скриптов в 3-ей версии по сравнению со 2-ой ??

 

Кстати, в третей ветке есть баг маленький (еще с начала версий) - при коннекте по ссх и добавлении чегото, через 24 часа ссх отваливается напрочь )) (только в случае коннектов гдето 1-3 раза в секунду). В версиях второй ветки все в норме, работает месяцами.

Поэтому советую перейти на API коннект.

 

Адрес-лист включение, выключение работает без проблем, дай пример скриптов, я поправлю

Share this post


Link to post
Share on other sites
Пытаюсь писать отключалку юзеров. Создаю скрипт с командами вида /ip firewall address-list disable 10 - не работает.

В мануале раздел Scripting Host зачитал до дыр - не могу найти, в чём проблема. Что может быть?

И не будет работать. Нужно использовать find.

Посмотрите примеры в WiKi и все станет ясно:

http://wiki.mikrotik.com/wiki/Scripts

 

Share this post


Link to post
Share on other sites
а можно немного поподробнее?

Можно. Правила такого типа:

11  ;;; forward access - from list
     chain=forward src-address-list=!disabled action=accept

 

Скрипт такого типа:

/ip firewall address-list {
add list=disabled address=192.168.11.3
add list=disabled address=192.168.11.4
add list=disabled address=192.168.11.5
#add list=disabled address=192.168.11.12
}

Share this post


Link to post
Share on other sites

тоже парился когда-то, но уже забыл... :( машина с микротиком разобрана, не посмотреть...

но особенность была в том, что микротик удаляет/добавляет правила файрвола по комментарию.

правда у меня удаленный telnet был, а не скрипты

 

PS

вот, что-то нашел

"Включение - /ip firewall address-list add address=UIP list=allow_ip comment=UID

Выключение - /ip firewall address-list remove UID"

http://www.x-drivers.ru/articles/manuals/17/4.html

Edited by KD

Share this post


Link to post
Share on other sites

всем спасибо, решил я эту проблемму......просто поставил 2.9.51 там все работает на ура. а в 3.16 думаю будет работать скрипт, если после каждого добавления правила юзать print. но сам не пробовал, ибо некогда(((

Share this post


Link to post
Share on other sites
а вы учитывали подкорректированный язык скриптов в 3-ей версии по сравнению со 2-ой ??

 

Кстати, в третей ветке есть баг маленький (еще с начала версий) - при коннекте по ссх и добавлении чегото, через 24 часа ссх отваливается напрочь )) (только в случае коннектов гдето 1-3 раза в секунду). В версиях второй ветки все в норме, работает месяцами.

Поэтому советую перейти на API коннект.

 

Адрес-лист включение, выключение работает без проблем, дай пример скриптов, я поправлю

Сказки какие-то. У меня работает месяцами, при том, что несколько раз в минуту дёргается по ssh для изменения правил/очередей.

Share this post


Link to post
Share on other sites
а вы учитывали подкорректированный язык скриптов в 3-ей версии по сравнению со 2-ой ??

 

Кстати, в третей ветке есть баг маленький (еще с начала версий) - при коннекте по ссх и добавлении чегото, через 24 часа ссх отваливается напрочь )) (только в случае коннектов гдето 1-3 раза в секунду). В версиях второй ветки все в норме, работает месяцами.

Поэтому советую перейти на API коннект.

 

Адрес-лист включение, выключение работает без проблем, дай пример скриптов, я поправлю

Сказки какие-то. У меня работает месяцами, при том, что несколько раз в минуту дёргается по ssh для изменения правил/очередей.

да это не сказки, а суровая реальность :(

Share this post


Link to post
Share on other sites

Включение - /ip firewall address-list add address=UIP list=allow_ip comment=UID

добавление выполняется на любой версии.

 

 

Выключение - /ip firewall address-list remove UID

а вот удаление из листа, на версии 3.хх не выполнялся.

 

 

вот пример скрипта, которым все это дело управлялось.

 

#!/bin/sh
ssh user_name@ip_address_nas "$*"

Edited by starchik

Share this post


Link to post
Share on other sites

народ помогите с такой темой в Mikrotik os 2.927. Как в скрипте прописать изменения IP адреса в pptp-aut конекте для динамичного днс.

команда которая ето делает /interface pptp-client set pptp-out1 connect-to 10.0.0.1 (только вместо 10.0.0.1 скрипт должен подставлять новий IP моево доменого имени) как достать етот адрес с /ip dns cache или из других мест

Share this post


Link to post
Share on other sites

Спасибо если кто напрягался по моему вопросу но я уже нашол решение вот оно

 

:global pptp-interface "pptp-out1"

:global pptp-connect-host "r0.ru"

:global pptp-host-ip [:resolve $pptp-connect-host]

:global pptp-connect-to [/interface pptp-client get $pptp-interface connect-to]

:if ($pptp-host-ip != $pptp-connect-to) do={

:log info "Updating VPN server ip"

/interface pptp-client set $pptp-interface connect-to=$pptp-host-ip}

 

Share this post


Link to post
Share on other sites
Спасибо если кто напрягался по моему вопросу но я уже нашол решение вот оно

 

:global pptp-interface "pptp-out1"

:global pptp-connect-host "r0.ru"

:global pptp-host-ip [:resolve $pptp-connect-host]

:global pptp-connect-to [/interface pptp-client get $pptp-interface connect-to]

:if ($pptp-host-ip != $pptp-connect-to) do={

:log info "Updating VPN server ip"

/interface pptp-client set $pptp-interface connect-to=$pptp-host-ip}

у меня почему-то не работает. просто ничего не происходит, когда я запускаю скрипт. версия 3.30.

 

П.С. пробовал выполнять просто команду :log info ("Test."). Лог пустой. В чем может быть прикол?

Другие скрипты работают, например по передаче моего ай-пи на динДнс.

Edited by 4iter

Share this post


Link to post
Share on other sites

удалите это мое сообщение

 

(сначала много написал - потом сам себе придумал ответ :)

Edited by ivan999

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