This is an example python script to demonstrate programmatically collecting current running config from a Cisco IOS-XE device and storing the config in a Git repo.
This allows you to monitor for configuration changes and track changes to over time.
subprocess
.You can get a virtual instance of a Cisco IOS-XE device from the DevNet Sandbox if you don't want to try this against a physical device.
This is optional
git clone https://github.com/GShuttleworth/Cisco-IOS-XE-config-to-Git
Open new Git repo folder in terminal
cd Cisco-IOS-XE-config-to-Git
It is good practice to run Python scripts in a virtual environment.
Create virtual environment
python3 -m venv venv
Open the virtual environment
source venv/bin/activate
Install Python dependencies
pip install -r requirements.txt
The cisco_ios_to_git.py
Python script has some variables you need to define.
Edit host
, username
and password
to match your device. By default the connection details are for the DevNet IOS-EX Sandbox mentioned above.
# Cisco IOS-XE connection details device = { "device_type": "cisco_ios", "host": "10.10.20.48", "username": "developer", "password": "C1sco12345", }
Edit git_repo_url
to match your Git repository URL.
Optional - edit commit_message
to specify what Git should use as the message for each commit.
# Git repository details git_repo_url = "https://github.com/your_repo_url" commit_message = "Automatic config update"
To run the Python script
python cisco_ios_to_git.py
The script automatically deletes all created files after the Git push is complete. This means there's nothing to see locally after it has ran.
Go to your remote Git repository and you should see your config uploaded.
If you make changes to the switch config and re-run the Python script, you will see Git track the changes between the new config and the old config. Check the changes by viewing the most recent Git commit!
If you have problems running the script, it is likely that the Git installed on your computer hasn't authenticated with the remote Git repository. The Python script relies on connection authentication credentials being cached on your computer.
To fix, manually clone the repository, and if prompted, enter authentication details.
git clone <git_repo_url>
You may need to use an access token rather than a password. Check here for details on creating access tokens if you're using GitHub
Owner
Contributors
Categories
NetworkingProducts
IOS XEProgramming Languages
PythonLicense
Code Exchange Community
Get help, share code, and collaborate with other developers in the Code Exchange community.View Community