Python implementation of routeros api. This library uses semantic versioning. On major version things may break, so pin version in dependencies.
from librouteros import connect
api = connect(username='admin', password='abc', host='some.address.com')
For SSL/TLS you need to create a ssl.SSLContext instance and pass it to connect()
.
Bare minimal requirement for ssl to work (without certificates).
import ssl
from librouteros import connect
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
ctx.set_ciphers('ADH')
api = connect(username='admin', password='abc', host='some.address.com', ssl_wrapper=ctx.wrap_socket, port=8729)
Api usage.
api(cmd='/interface/print', stats=True)
({'.id': '*1',
'bytes': '418152/157562',
'comment': '',
'disabled': False,
'drops': '0/0',
'dynamic': False,
'errors': '0/0',
'mtu': 1500,
'name': 'ether1',
'packets': '3081/1479',
'running': True,
'type': 'ether'},)
api(cmd='/interface/print')
({'.id': '*1',
'comment': '',
'disabled': False,
'dynamic': False,
'mtu': 1500,
'name': 'ether1',
'running': True,
'type': 'ether'},)
api.close()
If you want to pass parameters that start with a dot character you can do it in this way:
params = {'=disabled': True, '=.id' :'*7'}
api(cmd='/ip/firewall/nat/set', **params)
params = {'?type': 'vlan'}
api(cmd='/interface/print', **params}
Note that .id
must always be passed as read from API. They usually start with a *
followed by a number.
Keep in mind that they do change across reboots. As a rule of thumb, always read them first.
Python booleans are converted according to this table:
python | direction | api |
---|---|---|
False | <- | false,no |
True | <- | true,yes |
False | -> | no |
True | -> | yes |
To submit a feature requests or a bug report, please use issues from within github. If you would like to submit a patch please contact author or use pull request.