leases = api(cmd='/ip/dhcp-server/lease/print') for lease in leases: if lease['comment'] == 'printer-api': print(f"Lease: {lease['address']} -> {lease['mac-address']}") Toggle a rule by comment (safer than index).
api(cmd='/queue/simple/add', name='client-limited', target='192.168.88.100/32', max_limit='5M/5M', comment='api-created') For production, always use SSL on port 8729. mikrotik api examples
Try the examples above, then modify them to fit your network. Next week, I’ll cover for live graphing. Next week, I’ll cover for live graphing
If you manage more than one MikroTik router, logging into WinBox or WebFig for every small change gets old fast. The MikroTik API lets you script configuration, gather data, and react to network events — all from your own code. import ssl ssl_context = ssl
import ssl ssl_context = ssl.create_default_context() api_ssl = librouteros.connect( host='192.168.88.1', username='admin', password='', port=8729, use_ssl=True, ssl_wrapper=ssl_context )
Let me know in the comments. Want the code as a ready-to-use Python script? Download the gist here.
import librouteros api = librouteros.connect( host='192.168.88.1', username='admin', password='', port=8728, # default API port (plaintext) use_ssl=False ) resources = api(cmd='/system/resource/print') print(f"Board: {resources[0]['board-name']}") print(f"Uptime: {resources[0]['uptime']}") print(f"CPU Load: {resources[0]['cpu-load']}%")