An app to check and translate Catalyst switch configs to Meraki.
Project description
merakicat
This package makes migrating Cisco Catalyst switches to Meraki Dashboard much easier. #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.
-
You'll need to start by adding your Bot to the Webex Teams website.
-
Click Create a New App
-
Click Create a Bot.
-
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.
-
Click Add Bot.
-
On the Congratulations screen, make sure to copy the Bot's Access Token, you will need this in a second.
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
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file merakicat-0.2.6.tar.gz
.
File metadata
- Download URL: merakicat-0.2.6.tar.gz
- Upload date:
- Size: 2.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e33a3abcd523236d149e403b1d71ea1f28b045aebe9de9a6048b68315e074c2d |
|
MD5 | 5d3ee0d752f207c54ae460165a76f585 |
|
BLAKE2b-256 | e851e61240ba6b3da0fc374ff4bdab958f6e9de2ea9e6ec6b4be3b138b15c89c |
File details
Details for the file merakicat-0.2.6-py3-none-any.whl
.
File metadata
- Download URL: merakicat-0.2.6-py3-none-any.whl
- Upload date:
- Size: 60.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a92688ea7e5d09c06aecbb9ee687e4fc2ecf31cc4f15d3714330387314e8afbb |
|
MD5 | 827c48937af9d5b4222b54d7d0e588d1 |
|
BLAKE2b-256 | e2ec53de36ec4c90ec3c62c705776a1035b70d834b538e7abd77f74f83f29132 |