Skip to main content

Python library and tools for managing MikroTik SwOS and SwOS Lite switches

Project description

SwOS API and Tools

Python library and tools for managing MikroTik SwOS and SwOS Lite switches.

Components

  • swos package: Python library for reading/writing switch configuration
  • swos-config: CLI tool for displaying configuration
  • Ansible module: Full-featured Ansible integration for declarative, idempotent switch configuration management
    • Supports check mode (dry-run)
    • Auto-detects platform (SwOS vs SwOS Lite)
    • Manages ports, PoE, VLANs, LAG/LACP, SNMP
    • See ANSIBLE.md for complete documentation

Capabilities

Read: System info, ports, PoE, LAG/LACP, per-port VLANs, VLAN table, host table, SFP info, SNMP Write: System settings, port config, PoE settings, LAG/LACP, per-port VLANs, VLAN table, SNMP Note: All configuration changes are immediately applied and persisted by the switch.

Requirements

  • Python 3.6+
  • requests>=2.25.0

Installation

pip install mikrotik-swos

Or for development:

pip install -r requirements.txt

Compatibility

  • SwOS 2.18

  • SwOS Lite 2.17

  • SwOS Lite 2.18

  • SwOS Lite 2.19

  • SwOS Lite 2.20

Tested Hardware

  • CRS305-1G-4S+

  • CRS310-8G+2S+

  • CRS326-24S+2Q

  • CSS610-8G-2S+

  • CSS610-8P-2S+

Note: Gracefully handles switches without PoE, LAG/LACP, or SFP capabilities.

Quick Start

CLI Tool

# Display configuration
swos-config 192.168.1.7 admin ""

# Save to file
swos-config 192.168.1.7 admin "" > backup.txt

Python API

from swos import get_system_info, set_port_config

url = "http://192.168.1.7"
system = get_system_info(url, "admin", "")
print(f"{system['device_name']} - {system['model']}")

set_port_config(url, "admin", "", port_number=1, name="Uplink")

See module docstrings for complete API documentation.

Ansible - Infrastructure as Code

Perfect for managing multiple switches declaratively!

Quick Setup:

# Install package
pip install mikrotik-swos

# Copy module to your playbook
mkdir -p library
cp ansible/swos.py library/

Example Playbook:

- name: Configure Switch
  hosts: switches
  tasks:
    - name: Apply configuration
      swos:
        host: "{{ ansible_host }}"
        username: admin
        password: ""
        config:
          system:
            identity: "Office-Switch-01"
          ports:
            - port: 1
              name: "Uplink"
              enabled: true
            - port: 2
              name: "Server"
              enabled: true
          vlans:
            - vlan_id: 10
              members: [2, 3, 4]

Features:

  • Idempotent - only applies changes when needed
  • Check mode - preview changes with --check
  • Auto-detection - works with both SwOS and SwOS Lite
  • Complete validation - catches configuration errors before applying

Full Ansible Documentation - Complete guide with advanced examples

API Functions

Read: get_system_info(), get_links(), get_poe(), get_lag(), get_port_vlans(), get_vlans(), get_hosts(), get_sfp_info(), get_snmp()

Write: set_system(), set_port_config(), set_poe_config(), set_lag_config(), set_port_vlan(), set_vlans(), set_snmp()

All functions take (url, username, password, ...) parameters. Read functions return lists of dictionaries with configuration data. Write functions take port_number and optional setting parameters (except set_system(), set_snmp(), and set_vlans() which set global config).

See docstrings in the swos module for detailed parameters and return values.

Security

  • SwOS Lite uses HTTP with Digest Authentication (no HTTPS)
  • Use on trusted networks only
  • Use Ansible Vault for password storage

Development

Publishing a New Release

  1. Create and push a git tag:

    git tag v0.2.0
    git push origin v0.2.0
    
  2. GitHub Actions automatically builds and publishes to PyPI

Credits

Certain components of this codebase were created with the assistance of AI.

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

mikrotik_swos-0.0.1.tar.gz (114.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mikrotik_swos-0.0.1-py3-none-any.whl (23.9 kB view details)

Uploaded Python 3

File details

Details for the file mikrotik_swos-0.0.1.tar.gz.

File metadata

  • Download URL: mikrotik_swos-0.0.1.tar.gz
  • Upload date:
  • Size: 114.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mikrotik_swos-0.0.1.tar.gz
Algorithm Hash digest
SHA256 f634b4fb85c32ae200fa82e21dc5884f2e5cb449414f54807fdc1f8b1fa11a3b
MD5 f965b3fe74551beaefcdc4167fd7745c
BLAKE2b-256 d85b9bb1b1ccb469348a405b6c42b0ffbc8291485d947069fed22a6f128a1380

See more details on using hashes here.

Provenance

The following attestation bundles were made for mikrotik_swos-0.0.1.tar.gz:

Publisher: publish.yml on lanrat/python-mikrotik-swos

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mikrotik_swos-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: mikrotik_swos-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 23.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mikrotik_swos-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 511e2b1781144eca34ac464be8c04d2e8d7fb12af25736ebea89bc28ed025318
MD5 f52d73625ee5f32ca312acca10338008
BLAKE2b-256 08c0fff2f03a9e369e734e30e34f3860918606aeabd0e93c82f20a374d693a4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for mikrotik_swos-0.0.1-py3-none-any.whl:

Publisher: publish.yml on lanrat/python-mikrotik-swos

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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