CRUD Basics — IP Addresses
This notebook demonstrates listing, adding, updating, and deleting IP addresses.
Install
Mix.install([
{:mikrotik_api, path: ".."}
])
Setup
alias MikrotikApi.Auth
require Logger
auth = Auth.new(
username: System.get_env("MT_USER"),
password: System.get_env("MT_PASS"),
verify: :verify_none
)
ip = System.get_env("MT_IP") || "192.0.2.1"
List addresses
case MikrotikApi.ip_address_list(auth, ip, scheme: :http) do
{:ok, addrs} -> Logger.info("listed addresses: #{length(addrs)}")
{:error, err} -> Logger.error("list failed: #{inspect(err)}")
end
Ensure address exists
attrs = %{"address" => "192.168.88.2/24", "interface" => "bridge"}
case MikrotikApi.ip_address_ensure(auth, ip, attrs, scheme: :http) do
{:ok, addr} -> Logger.info("address present: #{addr}")
{:error, err} -> Logger.error("ensure failed: #{inspect(err)}")
end
Update and delete by id
with {:ok, list} <- MikrotikApi.ip_address_list(auth, ip, scheme: :http),
[%{".id" => id} | _] <- list do
_ = MikrotikApi.ip_address_update(auth, ip, id, %{"disabled" => "no"}, scheme: :http)
_ = MikrotikApi.ip_address_delete(auth, ip, id, scheme: :http)
:ok
else
_ -> Logger.info("no addresses to update/delete")
end