Skip to main content

Connect to and use API interface of MikroTik RouterOS

Project description

RouterOS API

Python API for MikroTik RouterOS. Simple and easy to use.

WARNING for old users:

Project has changes it's structure and import signature.

Features:

  • Easy to use;
  • Standard RouterOS API syntax;
  • SSL;
  • Verbose.

Find this project on PyPI.org.

Installation

python -m pip install laiarturs-ros-api

Usage:

Default configuration:

Python code:

import ros_api

router = ros_api.Api('192.168.88.1')
r = router.talk('/system/identity/print')
print(r)

Output:

[{'name': 'MikroTik'}]

Username, password, port:

Python code:

import ros_api

router = ros_api.Api('10.21.0.100', user='Bob', password='St4ong0nE', port=15811)
r = router.talk('/ip/address/print')
print(r)

Output:

[{'.id': '*5', 'address': '10.21.0.100/24', 'network': '10.21.0.0','interface': 'ether1',
'actual-interface': 'ether1', 'invalid': 'false', 'dynamic': 'false', 'disabled': 'false'}]

SSL and verbose:

On RouterOS router create certificate and assign it to api-ssl service.

RouterOS:

/certificate
add name=ca-template common-name=myCa key-usage=key-cert-sign,crl-sign
add name=server-template common-name=server                           
sign ca-template ca-crl-host=10.21.0.100 name=myCa                         
sign server-template ca=myCa name=server

/ip service
set [find name=api-ssl] certificate=server

More info: MikroTik Wiki.

Python code:

import ros_api

router = ros_api.Api('10.21.0.100', user='SysAdmin', password='Meeseeks', verbose=True, use_ssl=True)
r = router.talk('/interface/wireless/enable\n=numbers=0')
print(r)

Output:

>>>  /login
>>>  =name=SysAdmin
>>>  =password=Meeseeks

<<<  !done

>>>  /interface/wireless/enable
>>>  =numbers=0

<<<  !done

[]

How it works:

Python3 module routeros_api.py contains class Api.

__init__()

By initialising this class it creates socket, connects and logs in. Api class __init__() arguments:

Argument Description
address str of IP address or host of RouterOS router on which it can be reached.
user str of username on router, default='admin'.
password str of password of user on router, default=''.
use_ssl bool whether to use SSL, default=False.
port int on which port to connect to router, default=8728, ssl default=8729.
verbose bool whether to print conversation with router, default=False.
context ssl instance for creating ssl connection, default is created, but it can be adjusted.
timeout float in seconds to set timeout on socket blocking operations, default=None.

Python code:

router = Api(address='192.168.10.1', user='Juri', password='L0vE$aun@', 
             use_ssl=True, port=8730, verbose=False, context=ctx, timeout=1)

talk()

To send commands to router use talk() method of Api class. talk() take one argument - message:

Argument Description
message str, tuple or list of strings or tuples. It is possible to send multiple commands bundled in a list.

Python code:

message = [('/system/note/set', '=note=Multi line\nnote for the Router!'), '/system/note/print']
r = router.talk(message)
print(r)

Output:

[[], [{'show-at-login': 'true', 'note': 'Multi line\nnote for the Router!'}]]

If property values you want to send to router contains spaces or linebreaks, sentence must be divided in words and then passed to talk() as tuple. Otherwise you can send sentences as strings and it will be divided in words where there is space or linebreak.

Method talk() returns list containing replies from router. In this case there are two replies, because message contained two sentences. Actions like set, add, enable etc. usually returns empty list, however, print, monitor and others returns list with dict inside containing reply from router.

Messages use RouterOS API syntax. More info: MikroTik Wiki.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

laiarturs-ros_api-1.1.0.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

laiarturs_ros_api-1.1.0-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file laiarturs-ros_api-1.1.0.tar.gz.

File metadata

  • Download URL: laiarturs-ros_api-1.1.0.tar.gz
  • Upload date:
  • Size: 8.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.8.10

File hashes

Hashes for laiarturs-ros_api-1.1.0.tar.gz
Algorithm Hash digest
SHA256 f2439e21eaca37dc9b05a4bedbab7ff2034f8a74f20a3b4f0a7448b53d44fec7
MD5 ed6ebfdbb8449ccdce33a1dfdafbbba7
BLAKE2b-256 bc3b7622f44a7189dc3ec2131d2f09d807875ec596737f01910e3ee1b94c7b6b

See more details on using hashes here.

File details

Details for the file laiarturs_ros_api-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for laiarturs_ros_api-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1be16c22011e2c8ee4c279b5571ab597e0179778c342db5771da62cca1719f7b
MD5 ec218eee93d429a826c0367503bfec9f
BLAKE2b-256 c69fb33e70b42d5ec212de25e7ee89e642ef1ef1f70c3a9467992a5f8b3efa7e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page