Есть конфигурация типа устройства старого образца (который предполагается прекратить поддерживать):
Код:
sa.command.serv.create.1=/ip/firewall/filter/print\n?=comment=!!BLOCK!!
sa.command.serv.create.2=/ip/firewall/filter/add\n=chain=forward\n=place-before=$prevIdList\n=src-mac-address=$mac\n=disabled=no\n=src-address=$ip\n=comment=!!$servId!!
sa.command.serv.create.3=/ip/firewall/address-list/add\n=list=ALLOW\n=address=$ip\n=comment=!!$servId!!
#1
sa.command.inetOption.10.enable=/queue/simple/add\n=name=$contractTitle\n=max-limit=1M/1M\n=target=$ip\n=comment=!!$servId!!
...море опций...
#50
sa.command.inetOption.26.enable=/queue/simple/add\n=name=$contractTitle\n=max-limit=50M/50M\n=target=$ip\n=comment=!!$servId!!
#правила фаервола
sa.command.serv.enable=/ip/firewall/filter/enable\n=numbers=!!$servId!!;/ip/firewall/address-list/enable\n=numbers=!!$servId!!
sa.command.serv.disable=/ip/firewall/filter/disable\n=numbers=!!$servId!!;/ip/firewall/address-list/disable\n=numbers=!!$servId!!
sa.command.serv.cancel=/ip/firewall/filter/remove\n=numbers=!!$servId!!;/queue/simple/remove\n=numbers=!!$servId!!;/ip/firewall/address-list/remove\n=numbers=!!$servId!!
Привёл к новому образцу, поменяв активатор на ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator:
Код:
# Порт подключения (если не указан, то используется порт из поля Хост/порт)
sa.terminal.port=8728
# протокол подключения (telnet/ssh/tcp/mikrotik-api/mikrotik-api-ssl/shell)
sa.terminal.protocol=mikrotik-api
# Команда выхода (отключения)
sa.terminal.exit=
sa.terminal.serv.create.1=/ip/firewall/filter/print where comment=!!BLOCK!!
sa.terminal.serv.create.2=/ip/firewall/filter/add chain=forward place-before=${mikrotikLastIds()} src-mac-address=${mac()} disabled=no src-address=${ip()} comment=${servId()}
sa.terminal.serv.create.3=/ip/firewall/address-list/add list=ALLOW address=${ip()} comment=${servId()}
#1
sa.terminal.serv.inetOption.10.enable=/queue/simple/add name=${contractTitle()} max-limit=1M/1M target=${ip()} comment=${servId()}
...то же самое море опций...
#50
sa.terminal.serv.inetOption.26.enable=/queue/simple/add name=${contractTitle()} max-limit=50M/50M target=${ip()} comment=${servId()}
#правила фаервола
sa.terminal.serv.modify.enable=/ip/firewall/filter/enable numbers=${servId()};/ip/firewall/address-list/enable numbers=${servId()}
sa.terminal.serv.modify.disable=/ip/firewall/filter/disable numbers=${servId()};/ip/firewall/address-list/disable numbers=${servId()}
sa.terminal.serv.cancel=/ip/firewall/filter/remove numbers=${servId()};/queue/simple/remove numbers=${servId()};/ip/firewall/address-list/remove numbers=${servId()}
При синхронизации сервисов, биллинг логинится к железке, но ни каких правил не создает. В логе аксесса следующее:
Код:
connection 11-26/14:36:32 ERROR [sa-p-13-t-64] EventWorker - Error on device:99 - me.legrange.mikrotik.MikrotikApiException: no such item
ru.bitel.bgbilling.common.BGException: Error on device:99 - me.legrange.mikrotik.MikrotikApiException: no such item
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceActivatorDeviceWorker.java:516)
at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTaskImpl(AsyncEventWorker.java:248)
at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTask(AsyncEventWorker.java:220)
at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.doTasks(AsyncEventWorker.java:120)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runWorker(ServiceActivatorDeviceWorker.java:253)
at ru.bitel.bgbilling.kernel.event.EventWorker.internalRunWorker(EventWorker.java:154)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runImpl(ServiceActivatorDeviceWorker.java:157)
at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:87)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:46)
Caused by: me.legrange.mikrotik.MikrotikApiException: no such item
at me.legrange.mikrotik.impl.ApiConnectionImpl$SyncListener.getResults(ApiConnectionImpl.java:476)
at me.legrange.mikrotik.impl.ApiConnectionImpl$SyncListener.access$100(ApiConnectionImpl.java:430)
at me.legrange.mikrotik.impl.ApiConnectionImpl.execute(ApiConnectionImpl.java:114)
at me.legrange.mikrotik.impl.ApiConnectionImpl.execute(ApiConnectionImpl.java:72)
at ru.bitel.bgbilling.kernel.network.mikrotik.MikrotikApiSession.doCommand(MikrotikApiSession.java:92)
at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalSession$MikrotikApiTerminalSession.sendCommandImpl(TerminalSession.java:678)
at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalSession.sendCommand(TerminalSession.java:140)
at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalSession.sendCommand(TerminalSession.java:133)
at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommand(TerminalServiceActivator.java:762)
at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:728)
at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:689)
at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.invoke(TerminalServiceActivator.java:1474)
at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.invoke(TerminalServiceActivator.java:1402)
at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator$TGroovyMacro.invoke(TerminalServiceActivator.java:243)
at ru.bitel.common.groovy.GroovyMacro$MacroMetaClassDelegate.invokeMethod(GroovyMacro.java:241)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:158)
at Script1$_run_closure1.doCall(Script1.groovy:1)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
at ru.bitel.common.groovy.MetaClassDelegate.invokeMethod(MetaClassDelegate.java:107)
at ru.bitel.common.groovy.GroovyMacro$MacroMetaClassDelegate.invokeMethod(GroovyMacro.java:236)
at groovy.lang.Closure.call(Closure.java:414)
at ru.bitel.common.groovy.GroovyMacro.eval(GroovyMacro.java:201)
at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:713)
at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:688)
at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.serviceCancel(TerminalServiceActivator.java:2225)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorSet.serviceCancel(ServiceActivatorSet.java:359)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doCommand(ServiceActivatorDeviceWorker.java:569)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceActivatorDeviceWorker.java:512)
... 15 more
Caused by: me.legrange.mikrotik.impl.ApiCommandException: no such item
at me.legrange.mikrotik.impl.ApiConnectionImpl$Processor.run(ApiConnectionImpl.java:267)
Инфо:
Код:
Информация о версии:
Сервер: вер. 7.1.1154 / 01.11.2019 21:34:27
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_101
inet: вер. 7.1.742 / 01.11.2019 07:53:48
Код:
MikroTik RouterOS 6.45.7