jone31 писал(а):
настроил связку Микротик(100.64.0.2) в роли pppoe сервера с авторизацией через radius на Bgbill Inet.
Авторизация работает! и все...
как добавить например правило в ACL я немогу понять...
пробовал по инструкции вики через raduius, но так и не понял куда писать команды которые нужно послать микротику...
пробовал через SSH активатор, в логах микротика вижу Bill(юзер от биллинга) зашел и вышел... но ничего не сделал...
в конфиге выбрал активатором SSHServiceActivator и конфиг такой:
Код:
sa.host=100.64.0.2
sa.username=bill
sa.password=
sa.endSequence=>
#Команды вкючения сервиса на устройстве
sa.command.serv.enable=/ip firewall address-list;remove [find comment="!!$contractId!!"] ; add address=$ip list=allow_ip comment=!!$contractId!!
#Команды выключения сервиса на устройстве
sa.command.serv.disable=/ip firewall address-list;remove [find comment="!!$contractId!!"] ;
#Команды создания сервиса на устройстве.
sa.command.serv.create=/ip firewall address-list;remove [find comment="!!$contractId!!"] ; add address=$ip list=allow_ip comment=!!$contractId!!
#Команды удаления сервиса с устройства.
sa.command.serv.cancel=/ip firewall address-list;remove [find comment="!!$contractId!!"] ;
#Команды включения соединения на устройстве
sa.command.connection.enable=/ip firewall address-list;remove [find comment="!!$contractId!!"] ; add address=$ip list=allow_ip comment=!!$contractId!!
#Команды выключения соединения на устройстве
sa.command.connection.disable=/ip firewall address-list;remove [find comment="!!$contractId!!"] ;
в логах микротика при поднятии pppoe тока bill log on... и bill log off...
пробовал войти через ssh из консоли сервера биллинга - все норм, команды работаю исправно...
что я делаю не так?
stark писал(а):
А хотя нет, вам же find нужен . Пока он не поддерживается . Я
вот тут на днях обещал доделать, но пока руки не дошли.
В итоге я это доделал.
http://wiki.bitel.ru/index.php/%D0%9E%D ... krotik_api)
Цитата:
ак же есть специфичная переменная:
$prevIdList - результаты вызова предыдущей команды(все параметры id, через запятую).
Она нужна в тех случаях, когда есть необходимость в использовании команды find внутри другой команды. Дело в том, что Mikrotik Api не поддерживает использования таких команд, но их можно эмулировать с помощью вызова 2-х команд:
1) вначале команда print с заданными параметрами, из нее извлекаются список найденных id через запятую(их может быть несколько в общем случае)
2) Вызывается основная команда, куда вместо find подставляют список id, найденных на предыдущем шаге.
в вашем случае можно сделать
Код:
sa.command.serv.enable.1=/ip/firewall/address-list/print\n?comment=!!$contractId!!
sa.command.serv.enable.2=/ip/firewall/address-list/remove\n=numbers=$prevIdList;
и т.д..
Но в случае если вы хотите удалять просто по комментарию, эта конструкция не нужна . Там есть упрощенный вариант
Код:
sa.command.serv.enable.1=/ip/firewall/address-list/remove\n=numbers=!!$contractId!!
А вообще к командам есть несколько замечаний. Во-первых зачем в команде включения сервиса удалять адрес ? Это лишние действия . Ну в остальных командах тоже.
Во-вторых лучше использовать $servId вместо $contract, вдруг у вас будет несколько сервисов.