Skip to content
erlang mikrotik client
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
include
src
.gitignore
Makefile
Readme.md
rebar.config

Readme.md

Erlang Mikrotik client

Connecting

Api connection

To connect to mikrotik start new connection process with erotik:api_connect/5. Note, that connection process registers locally.
Example:

Name = "My super router",
Host = "127.0.0.1",
Port = 8728,
Login = "admin",
Password = "password",
{ok, Worker} = erotik:api_connect(Name, Host, Port, Login, Password).

When you start connection - it automatically connects to router and tries to authorize. That's why connections are locally registered. It is cheaper to use one connection per router, than start and auth new connection each time. Note authorization may not succeed at the first attempt, I don't know why router behaves such way, but advice to put connection under supervisor, as permanent or transient.

SSH connection

To connect to mikrotik through ssh - use erotik:ssh_connect/5. Note, that connection process registers locally.
Example:

Name = "My super router",
Host = "127.0.0.1",
Port = 8728,
Login = "admin",
Password = "password",
{ok, Worker} = erotik:ssh_connect(Name, Host, Port, Login, Password).

Note, for ssh connection to work - all dependend application should be started!

ok = application:start(crypto).
ok = application:start(asn1).
ok = application:start(public_key).
ok = application:start(ssh).

Executing commands

Now you can use api module erotik to call commands. There are several ready commands and command/2 function, to which you can pass your own commands.
Command command takes router's pid or atom name as first argument and list of string words as second arguments.
Example:

erotik:command('My super router', ["/ip/firewall/filter/set", "=disabled=no", "=.id=*D"]).

Configuring

Note, that default wait for response time is infinity. To avoid this - you can set env me_connector_wait_time in your application.conf file, providing positive integer number, which will be a new delay value.

You can’t perform that action at this time.