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.
- merakicat-0.0.14/.github/workflows/publish.yaml +17 -0
- merakicat-0.0.14/.gitignore +139 -0
- merakicat-0.0.14/AUTHORS.rst +15 -0
- merakicat-0.0.14/CONTRIBUTING.rst +55 -0
- merakicat-0.0.14/HISTORY.md +66 -0
- merakicat-0.0.14/LICENSE +21 -0
- merakicat-0.0.14/MANIFEST.in +11 -0
- merakicat-0.0.14/Makefile +88 -0
- merakicat-0.0.14/PKG-INFO +295 -0
- merakicat-0.0.14/README.md +196 -0
- merakicat-0.0.14/files/README.md +1 -0
- merakicat-0.0.14/images/botcongrats.jpg +0 -0
- merakicat-0.0.14/images/createbot.jpg +0 -0
- merakicat-0.0.14/images/newapp.jpg +0 -0
- merakicat-0.0.14/images/newbot.jpg +0 -0
- merakicat-0.0.14/pyproject.toml +9 -0
- merakicat-0.0.14/requirements_dev.txt +21 -0
- merakicat-0.0.14/setup.cfg +4 -0
- merakicat-0.0.14/setup.oldcfg +58 -0
- merakicat-0.0.14/setup.py +59 -0
- merakicat-0.0.14/src/batch_helper/__init__.py +311 -0
- merakicat-0.0.14/src/batch_helper/config.py +24 -0
- merakicat-0.0.14/src/batch_helper/exceptions.py +212 -0
- merakicat-0.0.14/src/merakicat/__init__.py +0 -0
- merakicat-0.0.14/src/merakicat/cisco_meraki.png +0 -0
- merakicat-0.0.14/src/merakicat/mc_bulk_migrate.sh +9 -0
- merakicat-0.0.14/src/merakicat/mc_cfg_check.py +161 -0
- merakicat-0.0.14/src/merakicat/mc_claim.py +100 -0
- merakicat-0.0.14/src/merakicat/mc_file_exists.py +40 -0
- merakicat-0.0.14/src/merakicat/mc_nm_specifics.py +87 -0
- merakicat-0.0.14/src/merakicat/mc_pedia.py +1334 -0
- merakicat-0.0.14/src/merakicat/mc_ping.py +20 -0
- merakicat-0.0.14/src/merakicat/mc_register.py +248 -0
- merakicat-0.0.14/src/merakicat/mc_splitcheck_serials.py +52 -0
- merakicat-0.0.14/src/merakicat/mc_translate.py +1141 -0
- merakicat-0.0.14/src/merakicat/mc_user_sample.py +36 -0
- merakicat-0.0.14/src/merakicat/merakicat.png +0 -0
- merakicat-0.0.14/src/merakicat/merakicat.py +1882 -0
- merakicat-0.0.14/src/merakicat/test.txt +2 -0
- merakicat-0.0.14/src/merakicat.egg-info/PKG-INFO +295 -0
- merakicat-0.0.14/src/merakicat.egg-info/SOURCES.txt +44 -0
- merakicat-0.0.14/src/merakicat.egg-info/dependency_links.txt +1 -0
- merakicat-0.0.14/src/merakicat.egg-info/not-zip-safe +1 -0
- merakicat-0.0.14/src/merakicat.egg-info/requires.txt +11 -0
- merakicat-0.0.14/src/merakicat.egg-info/top_level.txt +2 -0
- 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
|
+
|
merakicat-0.0.14/LICENSE
ADDED
|
@@ -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
|
+

|
|
80
|
+
|
|
81
|
+
1. Click **Create a Bot**.
|
|
82
|
+
|
|
83
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+
|