erotik

erlang mikrotik client

Stars
7
Committers
1

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.