Skip to main content

An app to check and translate Catalyst switch configs to Meraki.

Project description

published

merakicat merakicat

This package makes migrating Cisco Catalyst switches to Meraki Dashboard much easier. #merakicat

merakicat

This Python app can be run in Webex Teams Bot mode or in command-line mode. It can also be called from shell scripts for bulk-mode.

Below is the list of configurations the tool can currently translate:

switch:

  • Hostname
  • Spanning Tree RSTP
  • Stack
  • Static Routing

port:

  • Port Description
  • Port Status
  • Port Speed
  • Port Duplex
  • Port Type
  • PoE Enabled
  • Allowed VLANs
  • Data VLAN
  • Voice VLAN
  • Private VLAN
  • Layer 3 Interface
  • STP RootGuard
  • STP Loop Guard
  • STP BPDU Guard
  • Etherchannel LACP
  • NM Ports

Once installed, you can print the entire index of the feature encyclopedia, or to print the index based on either supported and translatable items or both, enter:

cd src/merakicat
python mc_pedia [support] [translatable]

Prerequisites for using in Bot mode

If you don't already have a Webex Teams account, go ahead and register for one. They are free.

  1. You'll need to start by adding your Bot to the Webex Teams website.

    https://developer.webex.com/my-apps

  2. Click Create a New App

    add-app

  3. Click Create a Bot.

    create-bot

  4. Fill out all the details about your Bot. You'll need to set a name, username, icon (either upload one or choose a sample), and provide a description.

    add-bot

  5. Click Add Bot.

  6. On the Congratulations screen, make sure to copy the Bot's Access Token, you will need this in a second.

    enter-details

Installation

Python 3.11 is recommended.

  • Clone the github repository and install the requirements
git clone https://github.com/ecoen66/merakicat
cd merakicat
pip install -r requirements_dev.txt

Usage

  • The easiest way to use this module is to set a few environment variables

    Note: As an alternative, you may edit the variables in mc_user_info.py. Although more convenient, it is less secure.

    # These exports are used for Webex bot mode:
    export TEAMS_BOT_TOKEN=<your bot's token>
    export TEAMS_BOT_EMAIL=<your bot's email>
    export TEAMS_BOT_APP_NAME=<your bot's name>
    export TEAMS_EMAILS=<a comma delimited list of email addresses the bot will respond to>
    
    # These exports are required regardless of mode:
    export IOS_USERNAME=<the ssh username for the Catalyst switches>
    export IOS_PASSWORD=<the ssh password for the Catalyst switches>
    export IOS_SECRET=<the CLI secret password for the Catalyst switches>
    export IOS_PORT=<the ssh port number for the Catalyst switches - usually 22>
    export MERAKI_API_KEY=<your meraki dashboard API key>
    export MERAKI_ORG_NAME =<your meraki organization name>
    

In addition to these settings, various debugs and a choice of PDF vs. DOCX report format can be enabled in the mc_user_info.py file.

> Note: For PDF report generation, MS Word must be installed on the host with merakicat.

Bot

To run merakicat as a Bot, just start it without any parameters:

cd src/merakicat
python merakicat.py

Bot commands include the following:

Check a Catalyst switch config for both translatable and possible Meraki features:

check [host <FQDN or IP address> | file <filespec>] [with timing] [with details]

Check one or more Catalyst switch config files for both translatable and possible Meraki features:

check <drag-and-drop files> [with timing] [with details]

Check the configs of cloud monitored Catalyst switches for both translatable and possible Meraki features:

check network <Meraki network name> [with timing] [with details]

Register a Catalyst switch to the Meraki Dashboard:

register [host <FQDN or IP address>] [with timing]

Claim Catalyst switches to a Meraki Network:

claim [<Meraki serial numbers>] [to <Meraki network name>] [with timing]

Translate a Catalyst switch config from a file or host to claimed Meraki serial numbers:

translate [host <FQDN or IP address> | file <filespec>] [to <Meraki serial numbers>] [with timing]

Migrate a Catalyst switch to a Meraki switch - register, claim & translate:

migrate [host <FQDN or IP address>] [to <Meraki network name>] [with timing]

Create a demo report for all features currently in the feature encyclopedia:

demo report

Command-line

To run merakicat from the command-line (or from a shell script), enter any of the following:

Check a Catalyst switch config for both translatable and possible Meraki features:

cd src/merakicat
python merakicat.py check host <FQDN or IP address> | file <filespec> [with timing] [with details]

Check the configs of cloud monitored Catalyst switches for both translatable and possible Meraki features:

cd src/merakicat
python merakicat.py check network <Meraki network name> [with timing] [with details]

Register a Catalyst switch or stack to the Meraki Dashboard:

cd src/merakicat
python merakicat.py register host <FQDN or IP address> [with timing]

Claim Catalyst switches to a Meraki Network:

cd src/merakicat
python merakicat.py claim <Meraki serial numbers> to <Meraki network name> [with timing]

Translate a Catalyst switch or stack config from a file or host to claimed Meraki serial numbers:

cd src/merakicat
python merakicat.py translate host <FQDN or IP address> | file <filespec> to <Meraki serial numbers> [with timing]

Migrate a Catalyst switch to a Meraki switch - register, claim & translate:

cd src/merakicat
python merakicat.py migrate host <FQDN or IP address> to <Meraki network name> [with timing]

Create a demo report for all features currently in the feature encyclopedia:

cd src/merakicat
python merakicat.py demo report

Bulk-mode

To run merakicat in bulk-mode, create a shell script to call merakicat in command line mode. Example scripts included in the repo are:

Generate Check config reports for a list of Catalyst switches, 20 switches at a time, until the entire list is exhausted. The list is provided in an input file, one hostname/fqdn/IP address per line:

cd src/merakicat
bulk_check.sh <input file>

Migrate a list of Catalyst switches to a Meraki network, 20 switches at a time, until the entire list is exhausted. The list is provided in an input file, one hostname/fqdn/IP address per line:

cd src/merakicat
bulk_migrate.sh <input file> <Meraki network name>

Donations

If you found this repo to be useful, please consider donating to Life Decisions, Rockford, IL through a purchase from the Merakicat store.

Credits

This project is heavily based on the work of others:

Catalyst_to_Meraki_Migration_Tool by Fady Sharobeem.

Catalyst_2_Meraki_Config_Checker by Fady Sharobeem.

The bot functionality is using webex_bot by Finbarr Brady.

History

1.0.1 (11-16-2025)

  • Fixed issue with single switch "stacks".
  • Fixed issue where switches on unified versions of IOS XE would automatically reboot into Meraki mode.
  • Added compatibility with Early Adopters version of Meraki Dashboard API for unified IOS XE onboarding.
  • Fixed issue with special versions of IOS XE.
  • Reformatted the encyclopedia for easier updates and readability.
  • Renamed the new encyclopedia, as it is no longer compatible with earlier versions of Merakicat.
  • Updated requirements

0.2.7 (03-23-2025)

  • Resolved issue with C9K Uplink after API change.
  • mc_pedia version 0.1.78

0.2.6 (05-07-2024)

  • Resolved Issue #6.
  • Fixed issue with unclaiming switches before removing switch stack.
  • Updated requirements.

0.2.5 (04-25-2024)

  • Reverted back to Finbarr Brady's webex-bot after a pull merge.

0.2.4 (04-12-2024)

  • Added Private VLAN -> Port Isolation to encyclopedia.
  • Removed older bot code.
  • Updated AUTHORS.rst.
  • Updated .gitignore

0.2.3 (04-10-2024)

  • Translate now checks to make sure that the target switches have the same number of ports as the sources.

0.2.2 (04-10-2024)

  • Added environment variable to specify a Meraki Oragnization name.

0.2.1 (04-10-2024)

  • Added support for ip default-gateway as a static route.

0.2.0 (04-10-2024)

  • Changed BOT libraries to enable websockets and remove ngrok for security.
  • Began adding logic for Catalyst Cloud Monitoring onboarding.

0.1.8 (04-03-2024)

  • Edited README.
  • Renamed mc_user_sample.py to mc_user_info.py and commented out possible environment variables.
  • Added logic to merakicat.py to handle missing variables on import from mc_user_info.py.

0.1.7 (04-01-2024)

  • Added the ability to Check the configs of cloud monitored Catalyst switches for both translatable and possible Meraki features.
  • Included "with timing" and "with details" options on check drag-n-drop.
  • Renamed some called functions in external modules.

0.1.6 (03-26-2024)

  • Updated encyclopedia.
  • Migrated batch helper code for cleaner installation.

0.1.5 (03-23-2024)

  • Supports NM ports.
  • Merged nm-specifics into the encyclopedia.

0.1.4 (03-21-2024)

  • Downloads a fresh copy of the encyclopedia from my repo if the local copy is over 24 hours old.

0.1.3 (03-21-2024)

  • Code beautification with flake8.
  • Setting up for publishing automation.
  • Changed directory structure for publishing.
  • Released on PyPI.

0.0.14 (03-19-2024)

  • Option added for check with drag and drop files in bot mode.
  • Added missing timing in check report in bot mode.
  • Still not yet released on PyPI.

0.0.13 (03-18-2024)

  • Option added for detailed check report "with detail".

0.0.12 (03-15-2024)

  • Option for PDF vs. DOCX reporting in checker.
  • Layer 3 Interfaces (interface VLAN) supported.
  • Static routes supported.
  • Command added for "demo report".

0.0.11 (03-12-2024)

  • New reporting in checker.
  • Port-channel LACP is working and fast.

0.0.10 (03-08-2024)

  • Using a single mc_pedia.

0.0.9 (03-07-2024)

  • Using both config_pedia and check_pedia.
  • Changed to ngrok API for bot functionality

0.0.8 (03-01-2024)

  • Lots of comment blocks added.

0.0.7 (03-01-2024)

  • Now using batch port updates to Meraki dashboard.

0.0.6 (03-01-2024)

  • Some light refactoring of mc_translate module.
  • More prep work for Uplink config.

0.0.5 (02-29-2024)

  • Added Catalyst NM module recognition and prep work for Uplink config.

0.0.4 (02-28-2024)

  • Removed external data fetch for list of unsupported features in prep for adding display of features that are semi-supported.
  • Added command line help python merakicat.py help.

0.0.3 (02-27-2024)

  • Created command line option vs BOT.
  • Just try python merakicat.py convert host to .

0.0.2 (02-26-2024)

  • Not yet released on PyPI.

0.0.1 (02-26-2024)

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

merakicat-1.0.1.tar.gz (2.1 MB view details)

Uploaded Source

Built Distribution

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

merakicat-1.0.1-py3-none-any.whl (72.0 kB view details)

Uploaded Python 3

File details

Details for the file merakicat-1.0.1.tar.gz.

File metadata

  • Download URL: merakicat-1.0.1.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for merakicat-1.0.1.tar.gz
Algorithm Hash digest
SHA256 9c8c1a27d6e5af30ce55584e4bb3cf86a7429bef10893cd1f47e11d75c7057ab
MD5 392380cf79ca8c2ce366de50ab902ea4
BLAKE2b-256 568d8b1b8653c6ca04c2359a6cbcc13a8f150295bfde9f05177fd933ac82b26b

See more details on using hashes here.

File details

Details for the file merakicat-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: merakicat-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 72.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for merakicat-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f3042582530cb31b6c4b017271f05d735ab934e1bf2a58ba10dae96703a56f1c
MD5 be8cc4d5dcffb583bfbcde29a5ef4076
BLAKE2b-256 4ec031ba467472c066b005365e92180204b31a1ef3e14105f001d903124bd1d1

See more details on using hashes here.

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