A python-based SSH API for MikroTik devices
Project description
MikroTik RouterOS SSH connector for Python
Features
A python-based SSH API for MikroTik devices
This API allows you to get, update and create configuration on MikroTik devices plus other some extra utilities.
This project is still in development and will include new functionalities in the future.
Installation
pip install routeros_ssh_connector
Usage
1. Import module
from routeros_ssh_connector import MikrotikDevice
2. Create a new instance of them
router = MikroTikDevice()
3. Connect to device
router.connect("ip_address", "username", "password", "port")
NOTE: If 'port' parameter is not passed to method the default value is 22
4. Call any of the following available methods
GET | UPDATE | CREATE | TOOLS |
---|---|---|---|
get_export_configuration | update_address_pool | create_address_pool | download_backup |
get_identity | update_dhcp_client | create_dhcp_client | download_export |
get_interfaces | update_dhcp_server_network | create_dhcp_server | download_file |
get_ip_addresses | update_dhcp_server_server | create_ip_address | enable_cloud_dns |
get_resources | update_identity | create_route | make_backup |
get_routes | update_ip_address | create_user | send_command |
get_services | update_services | ||
get_users | update_user |
interfaces = router.get_interfaces()
print(interfaces)
5. Disconnect from device
router.disconnect()
6. Delete router
object (optional)
del router
Examples
Get interfaces from device
from routeros_ssh_connector import MikrotikDevice
router = MikrotikDevice()
router.connect("10.0.0.1", "myuser", "strongpassword", 2222)
interfaces = router.get_interfaces()
print(interfaces)
router.disconnect()
del router
Output returns a list containing so many dictionaries as interfaces are found in device :
[{'status': 'running', 'name': 'ether1', 'default-name': 'ether1', 'type': 'ether', 'mtu': '1500', 'mac_address': 'AA:BB:CC:DD:EE:F0'}, {'status': 'disabled', 'name': 'pwr-line1', 'default-name': 'pwr-line1', 'type': 'ether', 'mtu': '1500', 'mac_address': 'AA:BB:CC:DD:EE:F1'}, {'status': 'disabled', 'name': 'wlan1', 'default-name': 'wlan1', 'type': 'wlan', 'mtu': '1500', 'mac_address': 'B8:69:F4:07:BE:AD'}, {'status': 'running', 'name': 'lo0', 'type': 'bridge', 'mtu': '1500', 'mac_address': 'AA:BB:CC:DD:EE:F2'}]
Update FTP service to enable it, set port to 2121 and allow connections only from 192.168.1.0/24 subnet
from routeros_ssh_connector import MikrotikDevice
router = MikrotikDevice()
router.connect("10.0.0.1", "myuser", "strongpassword", 2222)
print(router.update_services("ftp", "no", "2121", "192.168.1.0/24"))
router.disconnect()
del router
Output returns True
if no errors are encountered. In other case, returns the error itself:
True
Create a new enabled route to 172.16.0.0/25 with a distance of 5 with gateway 192.168.1.1
from routeros_ssh_connector import MikrotikDevice
router = MikrotikDevice()
router.connect("10.0.0.1", "myuser", "strongpassword")
print(router.create_route("172.16.0.0/25", "192.168.1.1", "5", "no"))
router.disconnect()
del router
Output returns True
if no errors are encountered. In other case, returns the error itself:
True
Send custom command to device
from routeros_ssh_connector import MikrotikDevice
router = MikrotikDevice()
router.connect("10.0.0.1", "myuser", "strongpassword")
print(router.send_command("/system clock print"))
router.disconnect()
del router
Output returns command output without left spaces (left trim):
time: 19:47:44
date: jun/01/2021
time-zone-autodetect: yes
time-zone-name: Europe/Madrid
gmt-offset: +02:00
dst-active: yes
Download backup from device to local folder
from routeros_ssh_connector import MikrotikDevice
router = MikrotikDevice()
router.connect("10.0.0.1", "myuser", "strongpassword")
# local_path examples:
# For Linux: "/home/myuser"
# For Windows: "C:/Users/myuser/Downloads"
print(router.download_backup("/home/myuser"))
router.disconnect()
del router
Output returns a message with full path of downloaded export file:
/home/mysuser/backup_Mikrotik_07-06-2021_21-38-47.backup
Export full config from device to terminal output
from routeros_ssh_connector import MikrotikDevice
router = MikrotikDevice()
router.connect("10.0.0.1", "myuser", "strongpassword")
print(router.get_export_configuration())
router.disconnect()
del router
Output returns device config export to terminal:
# jun/01/2021 19:04:03 by RouterOS 6.47.9
# software id = XXXX-XXXX
#
# model = RouterBOARD mAP L-2nD
# serial number = FFFFFFFFFFF
/interface pwr-line set [ find default-name=pwr-line1 ] disabled=yes
/interface bridge add name=lo0
/interface ethernet set [ find default-name=ether1 ] l2mtu=2000
/interface wireless set [ find default-name=wlan1 ] ssid=MikroTik
/interface wireless security-profiles set [ find default=yes ] supplicant-identity=MikroTik
/ip hotspot profile set [ find default=yes ] html-directory=flash/hotspot
...
Export full config from device to local folder
from routeros_ssh_connector import MikrotikDevice
router = MikrotikDevice()
router.connect("10.0.0.1", "myuser", "strongpassword")
print(router.download_export("/home/myuser"))
router.disconnect()
del router
Output returns a message with full path of downloaded export file:
/home/myuser/export_Mikrotik_07-06-2021_21-42-33.rsc
Download any file from device
from routeros_ssh_connector import MikrotikDevice
router = MikrotikDevice()
router.connect("10.0.0.1", "myuser", "strongpassword")
print(router.download_file("myfile.txt", "/home/myuser"))
router.disconnect()
del router
Output returns a message with full path of downloaded export file:
/home/myuser/myfile.txt
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
Hashes for routeros_ssh_connector-1.6.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 972870b0b3149dc951f4b1d776ec4d9cd036c56023a6646c9b2be074fdb6e59f |
|
MD5 | 33712a0e14de5005271ef4845a2dbf2c |
|
BLAKE2b-256 | caf8179451393c89e1e19a71847a6c3f138150b12ed9b8e177dfe86ebc6bfa7a |