merakicat 0.0.14__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. merakicat-0.0.14/.github/workflows/publish.yaml +17 -0
  2. merakicat-0.0.14/.gitignore +139 -0
  3. merakicat-0.0.14/AUTHORS.rst +15 -0
  4. merakicat-0.0.14/CONTRIBUTING.rst +55 -0
  5. merakicat-0.0.14/HISTORY.md +66 -0
  6. merakicat-0.0.14/LICENSE +21 -0
  7. merakicat-0.0.14/MANIFEST.in +11 -0
  8. merakicat-0.0.14/Makefile +88 -0
  9. merakicat-0.0.14/PKG-INFO +295 -0
  10. merakicat-0.0.14/README.md +196 -0
  11. merakicat-0.0.14/files/README.md +1 -0
  12. merakicat-0.0.14/images/botcongrats.jpg +0 -0
  13. merakicat-0.0.14/images/createbot.jpg +0 -0
  14. merakicat-0.0.14/images/newapp.jpg +0 -0
  15. merakicat-0.0.14/images/newbot.jpg +0 -0
  16. merakicat-0.0.14/pyproject.toml +9 -0
  17. merakicat-0.0.14/requirements_dev.txt +21 -0
  18. merakicat-0.0.14/setup.cfg +4 -0
  19. merakicat-0.0.14/setup.oldcfg +58 -0
  20. merakicat-0.0.14/setup.py +59 -0
  21. merakicat-0.0.14/src/batch_helper/__init__.py +311 -0
  22. merakicat-0.0.14/src/batch_helper/config.py +24 -0
  23. merakicat-0.0.14/src/batch_helper/exceptions.py +212 -0
  24. merakicat-0.0.14/src/merakicat/__init__.py +0 -0
  25. merakicat-0.0.14/src/merakicat/cisco_meraki.png +0 -0
  26. merakicat-0.0.14/src/merakicat/mc_bulk_migrate.sh +9 -0
  27. merakicat-0.0.14/src/merakicat/mc_cfg_check.py +161 -0
  28. merakicat-0.0.14/src/merakicat/mc_claim.py +100 -0
  29. merakicat-0.0.14/src/merakicat/mc_file_exists.py +40 -0
  30. merakicat-0.0.14/src/merakicat/mc_nm_specifics.py +87 -0
  31. merakicat-0.0.14/src/merakicat/mc_pedia.py +1334 -0
  32. merakicat-0.0.14/src/merakicat/mc_ping.py +20 -0
  33. merakicat-0.0.14/src/merakicat/mc_register.py +248 -0
  34. merakicat-0.0.14/src/merakicat/mc_splitcheck_serials.py +52 -0
  35. merakicat-0.0.14/src/merakicat/mc_translate.py +1141 -0
  36. merakicat-0.0.14/src/merakicat/mc_user_sample.py +36 -0
  37. merakicat-0.0.14/src/merakicat/merakicat.png +0 -0
  38. merakicat-0.0.14/src/merakicat/merakicat.py +1882 -0
  39. merakicat-0.0.14/src/merakicat/test.txt +2 -0
  40. merakicat-0.0.14/src/merakicat.egg-info/PKG-INFO +295 -0
  41. merakicat-0.0.14/src/merakicat.egg-info/SOURCES.txt +44 -0
  42. merakicat-0.0.14/src/merakicat.egg-info/dependency_links.txt +1 -0
  43. merakicat-0.0.14/src/merakicat.egg-info/not-zip-safe +1 -0
  44. merakicat-0.0.14/src/merakicat.egg-info/requires.txt +11 -0
  45. merakicat-0.0.14/src/merakicat.egg-info/top_level.txt +2 -0
  46. merakicat-0.0.14/tox.ini +40 -0
@@ -0,0 +1,17 @@
1
+ name: Publish to PyPI.org
2
+ on:
3
+ release:
4
+ types: [published]
5
+ jobs:
6
+ pypi:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - name: Checkout
10
+ uses: actions/checkout@v3
11
+ with:
12
+ fetch-depth: 0
13
+ - run: python3 -m pip install --upgrade build && python3 -m build
14
+ - name: Publish package
15
+ uses: pypa/gh-action-pypi-publish@release/v1
16
+ with:
17
+ password: ${{ secrets.PYPI_API_TOKEN }}
@@ -0,0 +1,139 @@
1
+ # My own testing credentials
2
+ src/mc_user_info.py
3
+
4
+ # Miscellaneous files
5
+ src/batch_helper_preview.json
6
+ src/test.txt
7
+
8
+ # App-created files and logs
9
+ files/*.cfg
10
+ files/*.pdf
11
+ files/*.docx
12
+ files/*.ab0
13
+ files/*.ab1
14
+ files/*.pd
15
+ *.log
16
+
17
+ # webexteamsbot
18
+ webexteamsbot/
19
+
20
+ # Dev Exclusions
21
+ scratch*
22
+ dev_botenv
23
+ venv-*/
24
+
25
+ # Byte-compiled / optimized / DLL files
26
+ __pycache__/
27
+ src/__pycache__/
28
+ *.py[cod]
29
+ *$py.class
30
+
31
+ # C extensions
32
+ *.so
33
+
34
+ # Distribution / packaging
35
+ .Python
36
+ env/
37
+ build/
38
+ develop-eggs/
39
+ dist/
40
+ downloads/
41
+ eggs/
42
+ .eggs/
43
+ lib/
44
+ lib64/
45
+ parts/
46
+ sdist/
47
+ var/
48
+ wheels/
49
+ *.egg-info/
50
+ .installed.cfg
51
+ *.egg
52
+
53
+
54
+ # PyInstaller
55
+ # Usually these files are written by a python script from a template
56
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
57
+ *.manifest
58
+ *.spec
59
+
60
+ # Installer logs
61
+ pip-log.txt
62
+ pip-delete-this-directory.txt
63
+
64
+ # Unit test / coverage reports
65
+ htmlcov/
66
+ .tox/
67
+ .coverage
68
+ .coverage.*
69
+ .cache
70
+ nosetests.xml
71
+ coverage.xml
72
+ *.cover
73
+ .hypothesis/
74
+ .pytest_cache/
75
+
76
+ # Translations
77
+ *.mo
78
+ *.pot
79
+
80
+ # Django stuff:
81
+ *.log
82
+ local_settings.py
83
+
84
+ # Flask stuff:
85
+ instance/
86
+ .webassets-cache
87
+
88
+ # Scrapy stuff:
89
+ .scrapy
90
+
91
+ # Sphinx documentation
92
+ docs/_build/
93
+
94
+ # PyBuilder
95
+ target/
96
+
97
+ # Jupyter Notebook
98
+ .ipynb_checkpoints
99
+
100
+ # pyenv
101
+ .python-version
102
+
103
+ # celery beat schedule file
104
+ celerybeat-schedule
105
+
106
+ # SageMath parsed files
107
+ *.sage.py
108
+
109
+ # dotenv
110
+ .env
111
+
112
+ # virtualenv
113
+ .venv
114
+ venv/
115
+ ENV/
116
+
117
+ # Spyder project settings
118
+ .spyderproject
119
+ .spyproject
120
+
121
+ # Rope project settings
122
+ .ropeproject
123
+
124
+ # mkdocs documentation
125
+ /site
126
+
127
+ # mypy
128
+ .mypy_cache/
129
+ holdmecat.bbprojectd/Chat Worksheet.bbaiworksheet
130
+ holdmecat.bbprojectd/ecoen.bbprojectsettings
131
+ holdmecat.bbprojectd/project.bbprojectdata
132
+ holdmecat.bbprojectd/Unix Worksheet.worksheet
133
+ webexteamsbot/__pycache__/__init__.cpython-311.pyc
134
+ webexteamsbot/__pycache__/models.cpython-311.pyc
135
+ webexteamsbot/__pycache__/webexteamsbot.cpython-311.pyc
136
+ *.pyc
137
+
138
+ src/mc_user_info.py
139
+ src/batch_helper_preview.json
@@ -0,0 +1,15 @@
1
+ =======
2
+ Credits
3
+ =======
4
+
5
+ Development Lead
6
+ ----------------
7
+ Ed Coen <https://github.com/ecoen66>
8
+
9
+ Based on Work by
10
+ ----------------
11
+ * Fady Sharobeem <https://github.com/fadysharobeem>
12
+
13
+ * Hank Preston <https://github.com/hpreston>
14
+ * Josh Anderson <https://github.com/joshand>
15
+ * Oleksii Borisenko <https://github.com/oborys>
@@ -0,0 +1,55 @@
1
+ .. highlight:: shell
2
+
3
+ ============
4
+ Contributing
5
+ ============
6
+
7
+ Contributions are welcome, and they are greatly appreciated! Every little bit
8
+ helps, and credit will always be given.
9
+
10
+ You can contribute in many ways:
11
+
12
+ Types of Contributions
13
+ ----------------------
14
+
15
+ Report Bugs
16
+ ~~~~~~~~~~~
17
+
18
+ Report bugs at https://github.com/ecoen66/merakicat/issues.
19
+
20
+ If you are reporting a bug, please include:
21
+
22
+ * Your operating system name and version.
23
+ * Any details about your local setup that might be helpful in troubleshooting.
24
+ * Detailed steps to reproduce the bug.
25
+
26
+ Fix Bugs
27
+ ~~~~~~~~
28
+
29
+ Look through the GitHub issues for bugs. Anything tagged with "bug" and "help
30
+ wanted" is open to whoever wants to implement it.
31
+
32
+ Implement Features
33
+ ~~~~~~~~~~~~~~~~~~
34
+
35
+ Look through the GitHub issues for features. Anything tagged with "enhancement"
36
+ and "help wanted" is open to whoever wants to implement it.
37
+
38
+ Write Documentation
39
+ ~~~~~~~~~~~~~~~~~~~
40
+
41
+ webexteamsbot could always use more documentation, whether as part of the
42
+ official webexteamsbot docs, in docstrings, or even on the web in blog posts,
43
+ articles, and such.
44
+
45
+ Submit Feedback
46
+ ~~~~~~~~~~~~~~~
47
+
48
+ The best way to send feedback is to file an issue at https://github.com/ecoen66/merakicat/issues.
49
+
50
+ If you are proposing a feature:
51
+
52
+ * Explain in detail how it would work.
53
+ * Keep the scope as narrow as possible, to make it easier to implement.
54
+ * Remember that this is a volunteer-driven project, and that contributions
55
+ are welcome :)
@@ -0,0 +1,66 @@
1
+ # History
2
+
3
+ ## 0.0.14 (03-19-2024)
4
+
5
+ - Option added for check with drag and drop files in bot mode.
6
+ - Added missing timing in check report in bot mode.
7
+ - Still not yet released on PyPI.
8
+
9
+ ## 0.0.13 (03-18-2024)
10
+
11
+ - Option added for detailed check report "with detail".
12
+
13
+ ## 0.0.12 (03-15-2024)
14
+
15
+ - Option for PDF vs. DOCX reporting in checker.
16
+ - Layer 3 Interfaces (interface VLAN) supported.
17
+ - Static routes supported.
18
+ - Command added for "demo report".
19
+
20
+ ## 0.0.11 (03-12-2024)
21
+
22
+ - New reporting in checker.
23
+ - Port-channel LACP is working and fast.
24
+
25
+ ## 0.0.10 (03-08-2024)
26
+
27
+ - Using a single mc_pedia.
28
+
29
+ ## 0.0.9 (03-07-2024)
30
+
31
+ - Using both config_pedia and check_pedia.
32
+ - Changed to ngrok API for bot functionality
33
+
34
+ ## 0.0.8 (03-01-2024)
35
+
36
+ - Lots of comment blocks added.
37
+
38
+ ## 0.0.7 (03-01-2024)
39
+
40
+ - Now using batch port updates to Meraki dashboard.
41
+
42
+ ## 0.0.6 (03-01-2024)
43
+
44
+ - Some light refactoring of mc_translate module.
45
+ - More prep work for Uplink config.
46
+
47
+ ## 0.0.5 (02-29-2024)
48
+
49
+ - Added Catalyst NM module recognition and prep work for Uplink config.
50
+
51
+ ## 0.0.4 (02-28-2024)
52
+
53
+ - Removed external data fetch for list of unsupported features in prep for adding display of features that are semi-supported.
54
+ - Added command line help **python merakicat.py help**.
55
+
56
+ ## 0.0.3 (02-27-2024)
57
+
58
+ - Created command line option vs BOT.
59
+ - Just try **python merakicat.py convert host <host or ip address> to <meraki network>**.
60
+
61
+ ## 0.0.2 (02-26-2024)
62
+
63
+ - Not yet released on PyPI.
64
+
65
+ ## 0.0.1 (02-26-2024)
66
+
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Cisco Systems, Inc. and its affiliates
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,11 @@
1
+ include AUTHORS.rst
2
+ include CONTRIBUTING.rst
3
+ include HISTORY.md
4
+ include LICENSE
5
+ include README.md
6
+
7
+ # recursive-include tests *
8
+ # recursive-exclude * __pycache__
9
+ # recursive-exclude * *.py[co]
10
+
11
+ # recursive-include Makefile *.jpg *.png *.gif
@@ -0,0 +1,88 @@
1
+ .PHONY: clean clean-test clean-pyc clean-build docs help
2
+ .DEFAULT_GOAL := help
3
+
4
+ define BROWSER_PYSCRIPT
5
+ import os, webbrowser, sys
6
+
7
+ try:
8
+ from urllib import pathname2url
9
+ except:
10
+ from urllib.request import pathname2url
11
+
12
+ webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1])))
13
+ endef
14
+ export BROWSER_PYSCRIPT
15
+
16
+ define PRINT_HELP_PYSCRIPT
17
+ import re, sys
18
+
19
+ for line in sys.stdin:
20
+ match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line)
21
+ if match:
22
+ target, help = match.groups()
23
+ print("%-20s %s" % (target, help))
24
+ endef
25
+ export PRINT_HELP_PYSCRIPT
26
+
27
+ BROWSER := python -c "$$BROWSER_PYSCRIPT"
28
+
29
+ help:
30
+ @python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)
31
+
32
+ clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts
33
+
34
+ clean-build: ## remove build artifacts
35
+ rm -fr build/
36
+ rm -fr dist/
37
+ rm -fr .eggs/
38
+ find . -name '*.egg-info' -exec rm -fr {} +
39
+ find . -name '*.egg' -exec rm -f {} +
40
+
41
+ clean-pyc: ## remove Python file artifacts
42
+ find . -name '*.pyc' -exec rm -f {} +
43
+ find . -name '*.pyo' -exec rm -f {} +
44
+ find . -name '*~' -exec rm -f {} +
45
+ find . -name '__pycache__' -exec rm -fr {} +
46
+
47
+ clean-test: ## remove test and coverage artifacts
48
+ rm -fr .tox/
49
+ rm -f .coverage
50
+ rm -fr htmlcov/
51
+ rm -fr .pytest_cache
52
+
53
+ lint: ## check style with flake8
54
+ flake8 merakicat tests
55
+
56
+ test: ## run tests quickly with the default Python
57
+ python setup.py test
58
+
59
+ test-all: ## run tests on every Python version with tox
60
+ tox
61
+
62
+ coverage: ## check code coverage quickly with the default Python
63
+ coverage run --source merakicat setup.py test
64
+ coverage report -m
65
+ coverage html
66
+ $(BROWSER) htmlcov/index.html
67
+
68
+ docs: ## generate Sphinx HTML documentation, including API docs
69
+ rm -f docs/merakicat.rst
70
+ rm -f docs/modules.rst
71
+ sphinx-apidoc -o docs/ merakicat
72
+ $(MAKE) -C docs clean
73
+ $(MAKE) -C docs html
74
+ $(BROWSER) docs/_build/html/index.html
75
+
76
+ servedocs: docs ## compile the docs watching for changes
77
+ watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D .
78
+
79
+ release: dist ## package and upload a release
80
+ twine upload dist/*
81
+
82
+ dist: clean ## builds source and wheel package
83
+ python setup.py sdist
84
+ python setup.py bdist_wheel
85
+ ls -l dist
86
+
87
+ install: clean ## install the package to the active Python's site-packages
88
+ python setup.py install
@@ -0,0 +1,295 @@
1
+ Metadata-Version: 2.1
2
+ Name: merakicat
3
+ Version: 0.0.14
4
+ Summary: An app to check and translate Catalyst switch configs to Meraki.
5
+ Home-page: https://github.com/ecoen66/merakicat
6
+ Author: Ed Coen
7
+ Author-email: ecoen@cisco.com
8
+ License: MIT license
9
+ Keywords: merakicat,catalyst,meraki,cisco,migration,webexteamsbot
10
+ Classifier: Development Status :: 2 - Pre-Alpha
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Natural Language :: English
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3 :: Only
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ License-File: AUTHORS.rst
20
+ Requires-Dist: webexteamsbot==0.1.4.2
21
+ Requires-Dist: webexteamssdk==1.0.3
22
+ Requires-Dist: Flask>=0.12.1
23
+ Requires-Dist: netmiko==4.3.0
24
+ Requires-Dist: tabulate==0.9.0
25
+ Requires-Dist: ciscoconfparse2==0.5
26
+ Requires-Dist: meraki==1.42.0
27
+ Requires-Dist: ngrok==1.1.0
28
+ Requires-Dist: python-docx==1.1.0
29
+ Requires-Dist: docx2pdf==0.1.8
30
+ Requires-Dist: requests==2.31.0
31
+
32
+ # merakicat
33
+
34
+ This package makes migrating [Cisco](https://www.cisco.com) Catalyst switches to [Meraki](https:www.meraki.com) Dashboard much easier.
35
+
36
+ Below is the list of configurations the tool can currently translate:
37
+
38
+ switch:
39
+ - Hostname
40
+ - Spanning Tree RSTP
41
+ - Stack
42
+ - Static Routing
43
+
44
+ port:
45
+ - Port Description
46
+ - Port Status
47
+ - Port Speed
48
+ - Port Duplex
49
+ - Port Type
50
+ - PoE Enabled
51
+ - Allowed VLANs
52
+ - Data VLAN
53
+ - Voice VLAN
54
+ - Layer 3 Interface
55
+ - STP RootGuard
56
+ - STP Loop Guard
57
+ - STP BPDU Guard
58
+ - Etherchannel LACP
59
+
60
+
61
+ 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:
62
+ ```
63
+ cd src
64
+ python mc_pedia [support] [translatable]
65
+ ```
66
+
67
+ After the configuration is pushed to the Meraki dashboard, the app will present a summary of configured ports and those that were not configured.
68
+
69
+ # Prerequisites
70
+
71
+ If you don't already have a [Webex Teams](https://www.webex.com/products/teams/index.html) account, go ahead and [register](https://www.webex.com/pricing/free-trial.html) for one. They are free.
72
+
73
+ 1. You'll need to start by adding your bot to the Webex Teams website.
74
+
75
+ [https://developer.webex.com/my-apps](https://developer.webex.com/my-apps)
76
+
77
+ 1. Click **Create a New App**
78
+
79
+ ![add-app](https://github.com/ecoen66/merakicat/raw/main/images/newapp.jpg)
80
+
81
+ 1. Click **Create a Bot**.
82
+
83
+ ![create-bot](https://github.com/ecoen66/merakicat/raw/main/images/createbot.jpg)
84
+
85
+ 2. 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.
86
+
87
+ ![add-bot](https://github.com/ecoen66/merakicat/raw/main/images/newbot.jpg)
88
+
89
+ 3. Click **Add Bot**.
90
+
91
+ 1. On the Congratulations screen, make sure to copy the *Bot's Access Token*, you will need this in a second.
92
+
93
+ ![enter-details](https://github.com/ecoen66/merakicat/raw/main/images/botcongrats.jpg)
94
+
95
+ # Installation
96
+
97
+ > Python 3.11+ is recommended.
98
+
99
+ - Clone the github repository and install the requirements
100
+
101
+ ```
102
+ git clone https://github.com/ecoen66/merakicat
103
+ cd merakicat
104
+ pip install -r requirements_dev.txt
105
+ cd src
106
+ python merakicat.py
107
+ ```
108
+
109
+ # Usage
110
+
111
+ - The easiest way to use this module is to set a few environment variables
112
+
113
+ > Note: As an alternative, you may rename mc_user_sample.py to mc_user_info.py and edit the variables there.
114
+ > Although more convenient, it is less secure.
115
+
116
+ > Note: See [ngrok](#ngrok) for details on setting up an easy HTTP tunnel for webhooks callbacks.
117
+
118
+ ```
119
+ export NGROK_AUTHTOKEN=<your ngrok Authtoken>
120
+ export TEAMS_BOT_TOKEN=<your bot's token>
121
+ export TEAMS_BOT_EMAIL=<your bot's email>
122
+ export TEAMS_BOT_APP_NAME=<your bot's name>
123
+ export TEAMS_EMAILS=<a comma delimited list of email addresses the bot will respond to>
124
+ export IOS_USERNAME=<the ssh username for the Catalyst switches>
125
+ export IOS_PASSWORD=<the ssh password for the Catalyst switches>
126
+ export IOS_SECRET=<the CLI secret password for the Catalyst switches>
127
+ export IOS_PORT=<the ssh port number for the Catalyst switches - usually 22>
128
+ export MERAKI_API_KEY=<your meraki dashboard API key>
129
+ ```
130
+ 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.
131
+
132
+ 1. This app can be run either as a Webex Teams bot or as a standalone command line program. To run it as a bot, just start it without any parameters:
133
+
134
+ ```
135
+ cd src
136
+ python merakicat.py
137
+ ```
138
+ **Bot commands include the following:**
139
+
140
+ Check a Catalyst switch config for both translatable and possible Meraki features:
141
+ ```
142
+ check [host <FQDN or IP address> | file <filespec>] [with timing] [with detail]
143
+ ```
144
+ > Note: The check command can also be used with one or more attached files through drag and drop.
145
+
146
+ Register a Catalyst switch to the Meraki Dashboard:
147
+ ```
148
+ register [host <FQDN or IP address>] [with timing]
149
+ ```
150
+ Claim Catalyst switches to a Meraki Network:
151
+ ```
152
+ claim [<Meraki serial numbers>] [to <Meraki network name>] [with timing]
153
+ ```
154
+ Translate a Catalyst switch config from a file or host to claimed Meraki serial numbers:
155
+ ```
156
+ translate [host <FQDN or IP address> | file <filespec>] [to <Meraki serial numbers>] [with timing]
157
+ ```
158
+ Migrate a Catalyst switch to a Meraki switch - register, claim & translate:
159
+ ```
160
+ migrate [host <FQDN or IP address>] [to <Meraki network name>] [with timing]
161
+ ```
162
+ Create a demo report for all features currently in the feature encyclopedia:
163
+ ```
164
+ demo report
165
+ ```
166
+
167
+
168
+ 1. To run it from the command line (or from a shell script), enter any of the following:
169
+
170
+ Check a Catalyst switch config for both translatable and possible Meraki features:
171
+ ```
172
+ check host <FQDN or IP address> | file <filespec> [with timing] [with detail]
173
+ ```
174
+ Register a Catalyst switch or stack to the Meraki Dashboard:
175
+ ```
176
+ register host <FQDN or IP address> [with timing]
177
+ ```
178
+ Claim Catalyst switches to a Meraki Network:
179
+ ```
180
+ claim <Meraki serial numbers> to <Meraki network name> [with timing]
181
+ ```
182
+ Translate a Catalyst switch or stack config from a file or host to claimed Meraki serial numbers:
183
+ ```
184
+ translate host <FQDN or IP address> | file <filespec> to <Meraki serial numbers> [with timing]
185
+ ```
186
+ Migrate a Catalyst switch to a Meraki switch - register, claim & translate:
187
+ ```
188
+ migrate host <FQDN or IP address> to <Meraki network name> [with timing]
189
+ ```
190
+ Create a demo report for all features currently in the feature encyclopedia:
191
+ ```
192
+ demo report
193
+ ```
194
+
195
+
196
+ # ngrok for usage as a bot
197
+
198
+ [ngrok](http://ngrok.com) will make it easy for you to interact with meraki cat as a bot.
199
+
200
+ You can find account instructions here under `Sign up for free!`: [https://dashboard.ngrok.com/login](https://dashboard.ngrok.com/login)
201
+
202
+ 1. After you've created an `ngrok` account, you will need to get your Authtoken. Click on `Your Authtoken` on the ngrok dashboard and copy it.
203
+
204
+
205
+ 1. You can now export it to the OS environment variables like this:
206
+
207
+ ```
208
+ export NGROK_AUTHTOKEN=<your ngrok Authtoken>
209
+ ```
210
+
211
+ 1. Now launch the bot!!
212
+
213
+ ```
214
+ python merakicat.py
215
+ ```
216
+
217
+ # Credits
218
+ **This project is _heavily_ based on the work of others:**
219
+
220
+ `Catalyst_to_Meraki_Migration_Tool` by [Fady Sharobeem](https://github.com/fadysharobeem).
221
+
222
+ `Catalyst_2_Meraki_Config_Checker` by [Fady Sharobeem](https://github.com/fadysharobeem).
223
+
224
+ The bot functionality is based on the `webexteamsbot` project by [Hank Preston](https://github.com/hpreston).
225
+
226
+ The initial packaging of the original `ciscosparkbot` project was done by [Kevin Corbin](https://github.com/kecorbin).
227
+
228
+
229
+
230
+ # History
231
+
232
+ ## 0.0.14 (03-19-2024)
233
+
234
+ - Option added for check with drag and drop files in bot mode.
235
+ - Added missing timing in check report in bot mode.
236
+ - Still not yet released on PyPI.
237
+
238
+ ## 0.0.13 (03-18-2024)
239
+
240
+ - Option added for detailed check report "with detail".
241
+
242
+ ## 0.0.12 (03-15-2024)
243
+
244
+ - Option for PDF vs. DOCX reporting in checker.
245
+ - Layer 3 Interfaces (interface VLAN) supported.
246
+ - Static routes supported.
247
+ - Command added for "demo report".
248
+
249
+ ## 0.0.11 (03-12-2024)
250
+
251
+ - New reporting in checker.
252
+ - Port-channel LACP is working and fast.
253
+
254
+ ## 0.0.10 (03-08-2024)
255
+
256
+ - Using a single mc_pedia.
257
+
258
+ ## 0.0.9 (03-07-2024)
259
+
260
+ - Using both config_pedia and check_pedia.
261
+ - Changed to ngrok API for bot functionality
262
+
263
+ ## 0.0.8 (03-01-2024)
264
+
265
+ - Lots of comment blocks added.
266
+
267
+ ## 0.0.7 (03-01-2024)
268
+
269
+ - Now using batch port updates to Meraki dashboard.
270
+
271
+ ## 0.0.6 (03-01-2024)
272
+
273
+ - Some light refactoring of mc_translate module.
274
+ - More prep work for Uplink config.
275
+
276
+ ## 0.0.5 (02-29-2024)
277
+
278
+ - Added Catalyst NM module recognition and prep work for Uplink config.
279
+
280
+ ## 0.0.4 (02-28-2024)
281
+
282
+ - Removed external data fetch for list of unsupported features in prep for adding display of features that are semi-supported.
283
+ - Added command line help **python merakicat.py help**.
284
+
285
+ ## 0.0.3 (02-27-2024)
286
+
287
+ - Created command line option vs BOT.
288
+ - Just try **python merakicat.py convert host <host or ip address> to <meraki network>**.
289
+
290
+ ## 0.0.2 (02-26-2024)
291
+
292
+ - Not yet released on PyPI.
293
+
294
+ ## 0.0.1 (02-26-2024)
295
+