├── requirements.txt ├── sample_gold_config ├── config_iosxr_iosxr_console.txt ├── config_iosxe_csr1000v-1_console.txt ├── config_nxos_sbx-n9kv-ao_console.txt ├── config_iosxr_iosxr_ops.txt ├── connection_iosxr.txt ├── config_iosxe_csr1000v-1_ops.txt ├── config_nxos_sbx-n9kv-ao_ops.txt ├── connection_sbx-n9kv-ao.txt └── connection_csr1000v-1.txt ├── LICENSE ├── sandbox-testbed.yaml ├── change2.py ├── change1.py ├── .gitignore ├── change_device_config.py └── README.md /requirements.txt: -------------------------------------------------------------------------------- 1 | genie 2 | pyats 3 | -------------------------------------------------------------------------------- /sample_gold_config/config_iosxr_iosxr_console.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sample_gold_config/config_iosxe_csr1000v-1_console.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sample_gold_config/config_nxos_sbx-n9kv-ao_console.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019, Cisco Systems, Inc. and/or 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. 22 | -------------------------------------------------------------------------------- /sandbox-testbed.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | testbed: 3 | name: alwaysonsbxs 4 | credentials: 5 | default: 6 | username: "developer" 7 | password: "C1sco12345" 8 | enable: "C1sco12345" 9 | 10 | devices: 11 | csr1000v-1: 12 | os: iosxe 13 | type: iosxe 14 | connections: 15 | defaults: 16 | class: unicon.Unicon 17 | ssh: 18 | protocol: ssh 19 | ip: "ios-xe-mgmt-latest.cisco.com" 20 | port: "8181" 21 | 22 | sbx-n9kv-ao: 23 | os: nxos 24 | type: nxos 25 | credentials: 26 | default: 27 | username: "admin" 28 | password: "Admin_1234!" 29 | enable: "Admin_1234!" 30 | connections: 31 | defaults: 32 | class: unicon.Unicon 33 | ssh: 34 | protocol: ssh 35 | ip: "sbx-nxos-mgmt.cisco.com" 36 | port: "8181" 37 | 38 | iosxr1: 39 | os: iosxr 40 | type: iosxr 41 | credentials: 42 | default: 43 | username: "admin" 44 | password: "C1sco12345" 45 | connections: 46 | defaults: 47 | class: unicon.Unicon 48 | ssh: 49 | protocol: ssh 50 | ip: "sbx-iosxr-mgmt.cisco.com" 51 | port: "8181" 52 | -------------------------------------------------------------------------------- /change2.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | """Potential network change that can be used by change_device_config.py script 3 | 4 | This script will retrieve information from a device. 5 | 6 | Copyright (c) 2018 Cisco and/or its affiliates. 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in all 16 | copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 24 | SOFTWARE. 25 | """ 26 | 27 | from random import randrange 28 | 29 | configuration_block = [ 30 | "username newuser{} password {}".format(randrange(10,99), "Yu76_87AF"), 31 | ] 32 | -------------------------------------------------------------------------------- /change1.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | """Potential network change that can be used by change_device_config.py script 3 | 4 | This script will retrieve information from a device. 5 | 6 | Copyright (c) 2018 Cisco and/or its affiliates. 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in all 16 | copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 24 | SOFTWARE. 25 | """ 26 | 27 | from random import randrange 28 | 29 | configuration_block = [ 30 | "interface Loopback{}".format(randrange(700,1023)), 31 | "description New Interface Created with Genie change" 32 | ] 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Repo specific 2 | diff_* 3 | changed/ 4 | gold_config/ 5 | 6 | # Byte-compiled / optimized / DLL files 7 | __pycache__/ 8 | *.py[cod] 9 | *$py.class 10 | 11 | # C extensions 12 | *.so 13 | 14 | # Distribution / packaging 15 | .Python 16 | build/ 17 | develop-eggs/ 18 | dist/ 19 | downloads/ 20 | eggs/ 21 | .eggs/ 22 | lib/ 23 | lib64/ 24 | parts/ 25 | sdist/ 26 | var/ 27 | wheels/ 28 | *.egg-info/ 29 | .installed.cfg 30 | *.egg 31 | MANIFEST 32 | 33 | # PyInstaller 34 | # Usually these files are written by a python script from a template 35 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 36 | *.manifest 37 | *.spec 38 | 39 | # Installer logs 40 | pip-log.txt 41 | pip-delete-this-directory.txt 42 | 43 | # Unit test / coverage reports 44 | htmlcov/ 45 | .tox/ 46 | .coverage 47 | .coverage.* 48 | .cache 49 | nosetests.xml 50 | coverage.xml 51 | *.cover 52 | .hypothesis/ 53 | .pytest_cache/ 54 | 55 | # Translations 56 | *.mo 57 | *.pot 58 | 59 | # Django stuff: 60 | *.log 61 | local_settings.py 62 | db.sqlite3 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # pyenv 81 | .python-version 82 | 83 | # celery beat schedule file 84 | celerybeat-schedule 85 | 86 | # SageMath parsed files 87 | *.sage.py 88 | 89 | # Environments 90 | .env 91 | .venv 92 | env/ 93 | venv/ 94 | ENV/ 95 | env.bak/ 96 | venv.bak/ 97 | 98 | # Spyder project settings 99 | .spyderproject 100 | .spyproject 101 | 102 | # Rope project settings 103 | .ropeproject 104 | 105 | # mkdocs documentation 106 | /site 107 | 108 | # mypy 109 | .mypy_cache/ 110 | -------------------------------------------------------------------------------- /sample_gold_config/config_iosxr_iosxr_ops.txt: -------------------------------------------------------------------------------- 1 | { 2 | "Building configuration...": {}, 3 | "Mon Jun 3 19:13:55.742 UTC": {}, 4 | "call-home": { 5 | "contact smart-licensing": {}, 6 | "profile CiscoTAC-1": { 7 | "active": {}, 8 | "destination transport-method http": {} 9 | }, 10 | "service active": {} 11 | }, 12 | "domain name abc.inc": {}, 13 | "end": {}, 14 | "hostname iosxr": {}, 15 | "interface GigabitEthernet0/0/0/0": { 16 | "ipv6 enable": {} 17 | }, 18 | "interface GigabitEthernet0/0/0/1": { 19 | "ipv6 enable": {} 20 | }, 21 | "interface GigabitEthernet0/0/0/2": { 22 | "ipv6 enable": {} 23 | }, 24 | "interface GigabitEthernet0/0/0/3": { 25 | "ipv6 enable": {} 26 | }, 27 | "interface GigabitEthernet0/0/0/4": { 28 | "ipv6 enable": {} 29 | }, 30 | "interface GigabitEthernet0/0/0/5": { 31 | "ipv6 enable": {} 32 | }, 33 | "interface GigabitEthernet0/0/0/6": { 34 | "ipv6 enable": {} 35 | }, 36 | "interface MgmtEth0/RP0/CPU0/0": { 37 | "ipv4 address 10.10.20.175 255.255.255.0": {} 38 | }, 39 | "line console": { 40 | "absolute-timeout 0": {}, 41 | "exec-timeout 0 0": {}, 42 | "session-timeout 0": {} 43 | }, 44 | "line default": { 45 | "absolute-timeout 0": {}, 46 | "exec-timeout 0 0": {}, 47 | "session-timeout 0": {}, 48 | "transport input ssh": {} 49 | }, 50 | "netconf agent tty": {}, 51 | "netconf-yang agent": { 52 | "ssh": {} 53 | }, 54 | "router static": { 55 | "address-family ipv4 unicast": { 56 | "0.0.0.0/0 10.10.20.254": {} 57 | } 58 | }, 59 | "ssh server netconf vrf default": {}, 60 | "ssh server v2": {}, 61 | "ssh server vrf default": {}, 62 | "tpa": { 63 | "vrf default": { 64 | "address-family ipv4": { 65 | "default-route mgmt": {} 66 | } 67 | } 68 | }, 69 | "username admin": { 70 | "group cisco-support": {}, 71 | "group root-lr": {}, 72 | "secret 5 $1$k7Sg$3/RgUwUsA2x74RY0mwVlH1": {} 73 | }, 74 | "xml agent tty": { 75 | "iteration off": {} 76 | } 77 | } -------------------------------------------------------------------------------- /change_device_config.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | """Script that leverages Genie to make a random change to a DevNet Sandbox 3 | 4 | This script will retrieve information from a device. 5 | 6 | Copyright (c) 2018 Cisco and/or its affiliates. 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in all 16 | copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 24 | SOFTWARE. 25 | """ 26 | 27 | from genie.conf import Genie 28 | from random import randrange, choice 29 | from importlib import import_module 30 | 31 | # Pick a random change file and import it 32 | changenum = randrange(1,3) 33 | change = import_module("change{}".format(changenum)) 34 | 35 | # Uncomment to print out the configuration change to be made. 36 | # print("Change to be made: ", change.configuration_block) 37 | 38 | print("Making a configuration change to some device in the testbed.") 39 | 40 | # Initialize the testbed and pick a random device 41 | testbed = Genie.init('sandbox-testbed.yaml') 42 | device = choice(list(testbed.devices)) 43 | 44 | # Uncomment to print out the device being changed 45 | # print("Device to be changed: {}".format(device)) 46 | 47 | # Connect to the chosen device 48 | testbed.devices[device].connect(log_stdout=False) 49 | 50 | # Send configuration change block 51 | testbed.devices[device].configure(change.configuration_block) 52 | 53 | # Disconnect 54 | testbed.devices[device].disconnect() 55 | 56 | print("Done making change... now go try to find it with 'genie learn'!") 57 | -------------------------------------------------------------------------------- /sample_gold_config/connection_iosxr.txt: -------------------------------------------------------------------------------- 1 | [2019-06-03 15:40:31,451] +++ iosxr logfile gold_config/connection_iosxr.txt +++ 2 | [2019-06-03 15:40:31,453] +++ Unicon plugin iosxr +++ 3 | Password: 4 | [2019-06-03 15:40:39,198] +++ connection to spawn: ssh -l admin 64.103.37.3 -p 8181, id: 4541116992 +++ 5 | [2019-06-03 15:40:39,198] connection to iosxr 6 | 7 | 8 | 9 | RP/0/RP0/CPU0:iosxr# 10 | [2019-06-03 15:40:53,231] +++ initializing handle +++ 11 | [2019-06-03 15:40:53,232] +++ iosxr: executing command 'terminal length 0' +++ 12 | terminal length 0 13 | Mon Jun 3 19:13:45.636 UTC 14 | RP/0/RP0/CPU0:iosxr# 15 | [2019-06-03 15:40:53,748] +++ iosxr: executing command 'terminal width 0' +++ 16 | terminal width 0 17 | Mon Jun 3 19:13:46.151 UTC 18 | RP/0/RP0/CPU0:iosxr# 19 | [2019-06-03 15:40:54,256] +++ iosxr: config +++ 20 | configure terminal 21 | Mon Jun 3 19:13:46.660 UTC 22 | RP/0/RP0/CPU0:iosxr(config)#no logging console 23 | RP/0/RP0/CPU0:iosxr(config)#line console 24 | RP/0/RP0/CPU0:iosxr(config-line)#exec-timeout 0 0 25 | RP/0/RP0/CPU0:iosxr(config-line)#absolute-timeout 0 26 | RP/0/RP0/CPU0:iosxr(config-line)#session-timeout 0 27 | RP/0/RP0/CPU0:iosxr(config-line)#line default 28 | RP/0/RP0/CPU0:iosxr(config-line)#exec-timeout 0 0 29 | RP/0/RP0/CPU0:iosxr(config-line)#absolute-timeout 0 30 | RP/0/RP0/CPU0:iosxr(config-line)#session-timeout 0 31 | RP/0/RP0/CPU0:iosxr(config-line)#commit 32 | Mon Jun 3 19:13:53.945 UTC 33 | RP/0/RP0/CPU0:iosxr(config-line)#end 34 | RP/0/RP0/CPU0:iosxr# 35 | [2019-06-03 15:41:03,332] +++ iosxr: executing command 'show running-config' +++ 36 | show running-config 37 | Mon Jun 3 19:13:55.742 UTC 38 | Building configuration... 39 | !! IOS XR Configuration version = 6.5.2 40 | !! Last configuration change at Mon Jun 3 19:13:53 2019 by admin 41 | ! 42 | hostname iosxr 43 | domain name abc.inc 44 | username admin 45 | group root-lr 46 | group cisco-support 47 | secret 5 $1$k7Sg$3/RgUwUsA2x74RY0mwVlH1 48 | ! 49 | tpa 50 | vrf default 51 | address-family ipv4 52 | default-route mgmt 53 | ! 54 | ! 55 | ! 56 | line console 57 | exec-timeout 0 0 58 | absolute-timeout 0 59 | session-timeout 0 60 | ! 61 | line default 62 | exec-timeout 0 0 63 | absolute-timeout 0 64 | session-timeout 0 65 | transport input ssh 66 | ! 67 | call-home 68 | service active 69 | contact smart-licensing 70 | profile CiscoTAC-1 71 | active 72 | destination transport-method http 73 | ! 74 | ! 75 | interface MgmtEth0/RP0/CPU0/0 76 | ipv4 address 10.10.20.175 255.255.255.0 77 | ! 78 | interface GigabitEthernet0/0/0/0 79 | ipv6 enable 80 | ! 81 | interface GigabitEthernet0/0/0/1 82 | ipv6 enable 83 | ! 84 | interface GigabitEthernet0/0/0/2 85 | ipv6 enable 86 | ! 87 | interface GigabitEthernet0/0/0/3 88 | ipv6 enable 89 | ! 90 | interface GigabitEthernet0/0/0/4 91 | ipv6 enable 92 | ! 93 | interface GigabitEthernet0/0/0/5 94 | ipv6 enable 95 | ! 96 | interface GigabitEthernet0/0/0/6 97 | ipv6 enable 98 | ! 99 | router static 100 | address-family ipv4 unicast 101 | 0.0.0.0/0 10.10.20.254 102 | ! 103 | ! 104 | xml agent tty 105 | iteration off 106 | ! 107 | netconf agent tty 108 | ! 109 | netconf-yang agent 110 | ssh 111 | ! 112 | ssh server v2 113 | ssh server vrf default 114 | ssh server netconf vrf default 115 | end 116 | 117 | RP/0/RP0/CPU0:iosxr# 118 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # genie-config-diff 2 | [![published](https://static.production.devnetcloud.com/codeexchange/assets/images/devnet-published.svg)](https://developer.cisco.com/codeexchange/github/repo/hpreston/genie-config-diff) 3 | 4 | One of the most common questions network engineers have to figure out is "What configuration changed?". [Genie](https://developer.cisco.com/pyats) from Cisco makes answering this question super easy. And as a bonus, it can do far as well! 5 | 6 | In this repo will provide you a quick example walkthrough how you can use this tool in your own environment. 7 | 8 | ## Prerequisites 9 | 10 | * You can run this code against your own lab devices, but the code included is built leveraging the following DevNet Always On Sandboxes 11 | * [IOS XE Always On Latest Code](https://devnetsandbox.cisco.com/RM/Diagram/Index/38ded1f0-16ce-43f2-8df5-43a40ebf752e?diagramType=Topology) 12 | * [NX-OS Always On Sandbox](https://devnetsandbox.cisco.com/RM/Diagram/Index/dae38dd8-e8ee-4d7c-a21c-6036bed7a804?diagramType=Topology) 13 | * [IOS XR Always On Sandbox](https://devnetsandbox.cisco.com/RM/Diagram/Index/e83cfd31-ade3-4e15-91d6-3118b867a0dd?diagramType=Topology) 14 | * You'll need Python 3.4-3.7 installed and working. 15 | * You'll need a macOS or Linux environment to run the examples 16 | * *Windows users can leverage Window Subsystem for Linux* 17 | 18 | ## Setting Up your Workstation 19 | 20 | 1. Clone down the repo and change to the directory. 21 | 22 | ```bash 23 | git clone https://github.com/hpreston/genie-config-diff 24 | cd genie-config-diff 25 | ``` 26 | 27 | 1. Setup Python Virtual Env 28 | 29 | ```bash 30 | python3 -m venv venv 31 | source venv/bin/activate 32 | pip install -r requirements.txt 33 | ``` 34 | 35 | 1. If you're going to leverage the DevNet Sandboxes, the file [`sandbox-testbed.yaml`](sandbox-testbed.yaml) is ready to go, feel free to take a look at it. 36 | 1. If you'd like to use your own lab gear you'll need to create a testbed file for your lab. Check the [docs](https://pubhub.devnetcloud.com/media/pyats/docs/topology/creation.html#testbed-file) for how to create one, or just use [`sandbox-testbed.yaml`](sandbox-testbed.yaml) as a template. 37 | 38 | ## Capturing the "Gold Config" 39 | In order to find changes in the configuration, you need to capture a gold config. One is included in the repository in the folder `sample_gold_config`, but you can also capture one of your own like this. 40 | 41 | 1. Simply `learn config` using Genie CLI. 42 | 43 | ```bash 44 | genie learn config --testbed-file sandbox-testbed.yaml --output gold_config 45 | ``` 46 | 47 | 1. If you look in the `gold_config` folder, you'll find 3 files for each device in the topology. 48 | * `connection_DEVICE.txt` - Raw console connection log for device 49 | * `config_iosxe_DEVICE_console.txt` - Raw device output from the configuration capture 50 | * `config_iosxe_DEVICE_ops.txt` - A JSON file created for the configuration 51 | 52 | ## Making Some Network Change 53 | Now to change something that we want to find... you could wait around for something to change, but that could take a while. Instead, go ahead and make a change. 54 | 55 | ### Option 1: DIY with CLI 56 | You can simply log into any of the sandbox devices we are working with using the connection info provide in the testbed or DevNet portal and use typical CLI commands to make some changes. 57 | 58 | ### Option 2: Run one of the Provided Scripts 59 | In this repo I've provided a script that will make a configuration change on one or more of the devices for you. I won't tell you what the changes are (but you could certainly look at the script) so you'll be surprised when you run the test. 60 | 61 | 1. Simply run this script to make the change. 62 | 63 | ```bash 64 | python change_device_config.py 65 | ``` 66 | 67 | ## Finding the Change! 68 | Now for the good part, let's find the change. 69 | 70 | 1. Re-learn the current configuration. You need to provide a new value for the `output`. 71 | 72 | ```bash 73 | genie learn config --testbed-file sandbox-testbed.yaml --output changed 74 | ``` 75 | 76 | 1. Now find the `diff` between the `gold_config` and `changed`. 77 | 78 | ```bash 79 | genie diff gold_config changed 80 | 81 | # Output 82 | +==============================================================================+ 83 | | Genie Diff Summary between directories gold_config/ and changed/ | 84 | +==============================================================================+ 85 | | File: config_iosxe_csr1000v-1_ops.txt | 86 | | - Diff can be found at ./diff_config_iosxe_csr1000v-1_ops.txt | 87 | |------------------------------------------------------------------------------| 88 | | File: config_iosxr_iosxr_ops.txt | 89 | | - Diff can be found at ./diff_config_iosxr_iosxr_ops.txt | 90 | |------------------------------------------------------------------------------| 91 | | File: config_nxos_sbx-n9kv-ao_ops.txt | 92 | | - Diff can be found at ./diff_config_nxos_sbx-n9kv-ao_ops.txt | 93 | |------------------------------------------------------------------------------| 94 | ``` 95 | 96 | 1. The output of the command shows you where the diffences are, and you can check the files referenced for the specific changes. 97 | 98 | ```diff 99 | --- gold_config/config_iosxe_csr1000v-1_ops.txt 100 | +++ changed/config_iosxe_csr1000v-1_ops.txt 101 | +Current configuration : 9351 bytes: 102 | +interface Loopback1001: 103 | + description GenieLoop1001: 104 | + no ip address: 105 | +interface Loopback1184: 106 | + description New Interface Created with Genie change: 107 | + no ip address: 108 | -Current configuration : 9191 bytes: 109 | ``` -------------------------------------------------------------------------------- /sample_gold_config/config_iosxe_csr1000v-1_ops.txt: -------------------------------------------------------------------------------- 1 | { 2 | "Building configuration...": {}, 3 | "Current configuration : 9191 bytes": {}, 4 | "Thanks for stopping by.": {}, 5 | "The following programmability features are already enabled:": { 6 | "- NETCONF": {}, 7 | "- RESTCONF": {} 8 | }, 9 | "Welcome to the DevNet Sandbox for CSR1000v and IOS XE": {}, 10 | "^C": {}, 11 | "banner motd ^C": {}, 12 | "boot-end-marker": {}, 13 | "boot-start-marker": {}, 14 | "call-home": { 15 | "contact-email-addr sch-smart-licensing@cisco.com": {}, 16 | "profile \"CiscoTAC-1\"": { 17 | "active": {}, 18 | "destination transport-method http": {}, 19 | "no destination transport-method email": {} 20 | } 21 | }, 22 | "control-plane": {}, 23 | "crypto pki certificate chain SLA-TrustPoint": { 24 | "certificate ca 01": { 25 | "03820101 00507F24 D3932A66 86025D9F E838AE5C 6D4DF6B0 49631C78 240DA905": {}, 26 | "06300F06 03551D13 0101FF04 05300301 01FF301D 0603551D 0E041604 1449DC85": {}, 27 | "1C394D78 462EF239 C659F715 B98C0A59 5BBB5CBD 0CFEBEA3 700A8BF7 D8F256EE": {}, 28 | "30820321 30820209 A0030201 02020101 300D0609 2A864886 F70D0101 0B050030": {}, 29 | "32310E30 0C060355 040A1305 43697363 6F312030 1E060355 04031317 43697363": {}, 30 | "3834375A 170D3338 30353330 31393438 34375A30 32310E30 0C060355 040A1305": {}, 31 | "418616A9 4093E049 4D10AB75 27E86F73 932E35B5 8862FDAE 0275156F 719BB2F0": {}, 32 | "43697363 6F312030 1E060355 04031317 43697363 6F204C69 63656E73 696E6720": {}, 33 | "467A3DF4 4D565700 6ADF0F0D CF835015 3C04FF7C 21E878AC 11BA9CD2 55A9232C": {}, 34 | "4AA4E80D DB6FD1C9 60B1FD18 FFC69C96 6FA68957 A2617DE7 104FDC5F EA2956AC": {}, 35 | "4B3D31E5 1B3E6A17 606AF333 3D3B4C73 E8300D06 092A8648 86F70D01 010B0500": {}, 36 | "526F6F74 20434130 82012230 0D06092A 864886F7 0D010101 05000382 010F0030": {}, 37 | "5FB0DA06 B92AFE7F 494E8A9E 07B85737 F3A58BE1 1A48A229 C37C1E69 39F08678": {}, 38 | "604EDCDE FF4FED2B 77FC460E CD636FDB DD44681E 3A5673AB 9093D3B1 6C9E3D8B": {}, 39 | "68E69491 20F320E7 948E71D7 AE3BCC84 F10684C7 4BC8E00F 539BA42B 42C68BB7": {}, 40 | "6F204C69 63656E73 696E6720 526F6F74 20434130 1E170D31 33303533 30313934": {}, 41 | "7390A3EB 2B5436AD C847A2C5 DAB553EB 69A9A535 58E9F3E3 C0BD23CF 58BD7188": {}, 42 | "7CA7B7E6 C1AF74F6 152E99B7 B1FCF9BB E973DE7F 5BDDEB86 C71E3B49 1765308B": {}, 43 | "80DDCD16 D6BACECA EEBC7CF9 8428787B 35202CDC 60E4616A B623CDBD 230E3AFB": {}, 44 | "82010A02 82010100 A6BCBD96 131E05F7 145EA72C 2CD686E6 17222EA1 F1EFF64D": {}, 45 | "C55F0D76 61F9A4CD 3D992327 A8BB03BD 4E6D7069 7CBADF8B DF5F4368 95135E44": {}, 46 | "C7479096 B4CB2D62 EA2F505D C7B062A4 6811D95B E8250FC4 5D5D5FB8 8F27D191": {}, 47 | "CBB4C798 212AA147 C655D8D7 9471380D 8711441E 1AAF071A 9CAE6388 8A38E520": {}, 48 | "D697DF7F 28": { 49 | "quit": {} 50 | }, 51 | "D98987BF E40CBD9E 1AECA0C2 2189BB5C 8FA85686 CD98B646 5575B146 8DFC66A8": {}, 52 | "DFC7C6CF 04DD7FD1 02030100 01A34230 40300E06 03551D0F 0101FF04 04030201": {} 53 | } 54 | }, 55 | "crypto pki certificate chain TP-self-signed-1059130051": { 56 | "certificate self-signed 01": { 57 | "024C3937 8FC6B165 6DDD78AA CBDE26B6 22A3B2CF 1617367F 64F56E10 056873D3": {}, 58 | "0A028201 01009DB5 CB46A2CB EF798209 B9E60F24 2AD4F63B 7FAD32C9 DF508833": {}, 59 | "11D3D218 05E1A2BF C98EDE32 7F9F0937 DBAF8AA9": { 60 | "quit": {} 61 | }, 62 | "1909438C B48A4378 42C78B33 84B3C73D 7B847DBD 7F540522 4F708603 666D8609": {}, 63 | "2131BD4B 221F0821 A936D2CA DC9A73A9 0D1880FD F20C4E92 7B749C16 D2B3BC2D": {}, 64 | "27FE8781 CEBE363E 98BC68CB BA681F3A 0C040D0E 138CB708 A63FC4A3 C89DF4F8": {}, 65 | "300D0609 2A864886 F70D0101 05050003 82010100 125F8C6F 10160B1C CA98F2D9": {}, 66 | "301F0603 551D2304 18301680 14A036FC 136C015A DA5E90D7 4CA8FCCA 0FD3AB11": {}, 67 | "30820330 30820218 A0030201 02020101 300D0609 2A864886 F70D0101 05050030": {}, 68 | "31312F30 2D060355 04031326 494F532D 53656C66 2D536967 6E65642D 43657274": {}, 69 | "33303035 31308201 22300D06 092A8648 86F70D01 01010500 0382010F 00308201": {}, 70 | "34060A9A 2C852783 74940351 A5C3DCC4 18C56177 201DB0FF FD36B74E CC837517": {}, 71 | "34345A17 0D333030 31303130 30303030 305A3031 312F302D 06035504 03132649": {}, 72 | "4430FC04 94DC7E36 EB55D92A 87996A0B 53139F6D 980F37DC 1FD6A908 9530A59C": {}, 73 | "46BE7467 F4150203 010001A3 53305130 0F060355 1D130101 FF040530 030101FF": {}, 74 | "4E301D06 03551D0E 04160414 A036FC13 6C015ADA 5E90D74C A8FCCA0F D3AB114E": {}, 75 | "4F532D53 656C662D 5369676E 65642D43 65727469 66696361 74652D31 30353931": {}, 76 | "61BAF65D 9C94D472 3A43EE5B 297DEAB7 5AF892D4 1884C715 BB561B42 D4F22E74": {}, 77 | "69666963 6174652D 31303539 31333030 3531301E 170D3139 30353135 31353532": {}, 78 | "783DA025 9547FFC8 3F850FF5 6307126D 8D7AC8F6 BBA1915C F4A3AF91 C8D4BC29": {}, 79 | "7CEA5995 E2ED50A7 AD593D54 95F91777 63F014AB AA24DC69 94219D45 80C69618": {}, 80 | "7DEC1BB3 D8FCD37E E5682FF2 60061E76 DD1BDCEE 0C479896 A013E99D 81C58863": {}, 81 | "7F4B5902 F77E0135 9C91120B 8AF47B45 AF71BB7E FCCEF0CF 20266FA8 DD032D0A": {}, 82 | "7F65B575 44B9A198 FE4F294C A644D77A E68BC8E6 0E0B8223 E20752A5 B1DD7F94": {}, 83 | "C648B50E 383DE28C 8CBE7144 9737DF7E 562F4937 F981558F 6628D7E9 D92CD668": {}, 84 | "D7353920 3FF45907 A639EC6B 32ED18D5 C943BF84 BCF0EDC6 C9DA7D92 3FA2E781": {} 85 | } 86 | }, 87 | "crypto pki trustpoint SLA-TrustPoint": { 88 | "enrollment pkcs12": {}, 89 | "revocation-check crl": {} 90 | }, 91 | "crypto pki trustpoint TP-self-signed-1059130051": { 92 | "enrollment selfsigned": {}, 93 | "revocation-check none": {}, 94 | "rsakeypair TP-self-signed-1059130051": {}, 95 | "subject-name cn=IOS-Self-Signed-Certificate-1059130051": {} 96 | }, 97 | "diagnostic bootup level minimal": {}, 98 | "enable secret 9 $9$PvdeTeuxxh0ygk$PSg0GTG2I7bluI51e.IvfEu2uxy56e/9/PgqzFUklso": {}, 99 | "end": {}, 100 | "hostname csr1000v-1": {}, 101 | "interface GigabitEthernet1": { 102 | "description MANAGEMENT INTERFACE - DON'T TOUCH ME": {}, 103 | "ip address 10.10.20.48 255.255.255.0": {}, 104 | "negotiation auto": {}, 105 | "no mop enabled": {}, 106 | "no mop sysid": {} 107 | }, 108 | "interface GigabitEthernet2": { 109 | "description ConfiguredNetConf": {}, 110 | "negotiation auto": {}, 111 | "no ip address": {}, 112 | "no mop enabled": {}, 113 | "no mop sysid": {}, 114 | "shutdown": {} 115 | }, 116 | "interface GigabitEthernet3": { 117 | "description Network Interface": {}, 118 | "negotiation auto": {}, 119 | "no ip address": {}, 120 | "no mop enabled": {}, 121 | "no mop sysid": {}, 122 | "shutdown": {} 123 | }, 124 | "interface Loopback101": { 125 | "description Created with Ansible": {}, 126 | "ip address 192.168.1.1 255.255.255.255": {} 127 | }, 128 | "interface Loopback102": { 129 | "description Created with Ansible": {}, 130 | "ip address 192.168.1.2 255.255.255.255": {} 131 | }, 132 | "interface Loopback1150": { 133 | "description Pod Number 1150": {}, 134 | "ip address 10.111.11.1 255.255.255.255": {}, 135 | "vrf forwarding red": {} 136 | }, 137 | "interface Loopback1250": { 138 | "description Pod Number 1250": {}, 139 | "ip address 10.111.12.1 255.255.255.255": {}, 140 | "vrf forwarding blue": {} 141 | }, 142 | "interface Loopback1350": { 143 | "description Pod Number 1350": {}, 144 | "ip address 10.111.13.1 255.255.255.255": {}, 145 | "vrf forwarding green": {} 146 | }, 147 | "interface Loopback1450": { 148 | "description Pod Number 1450": {}, 149 | "ip address 10.111.14.1 255.255.255.255": {}, 150 | "vrf forwarding mypod": {} 151 | }, 152 | "interface Loopback199": { 153 | "description New Loopback by Priv15 user": {}, 154 | "ip address 172.32.255.1 255.255.255.255": {} 155 | }, 156 | "interface Loopback5050": { 157 | "description Pod Number 5050": {}, 158 | "ip address 10.111.50.1 255.255.255.255": {} 159 | }, 160 | "interface Loopback5150": { 161 | "description Pod Number 5150": {}, 162 | "ip address 10.111.51.1 255.255.255.255": {} 163 | }, 164 | "interface Loopback5250": { 165 | "description Pod Number 5250": {}, 166 | "ip address 10.111.52.1 255.255.255.255": {} 167 | }, 168 | "interface Loopback5350": { 169 | "description Pod Number 5350": {}, 170 | "ip address 10.111.53.1 255.255.255.255": {} 171 | }, 172 | "interface Loopback99": { 173 | "description Developers interface": {}, 174 | "ip address 192.168.233.1 255.255.255.255": {} 175 | }, 176 | "ip domain name abc.inc": {}, 177 | "ip forward-protocol nd": {}, 178 | "ip http authentication local": {}, 179 | "ip http secure-server": {}, 180 | "ip http server": {}, 181 | "ip route 0.0.0.0 0.0.0.0 GigabitEthernet1 10.10.20.254": {}, 182 | "ip scp server enable": {}, 183 | "ip ssh rsa keypair-name ssh-key": {}, 184 | "ip ssh version 2": {}, 185 | "license boot level ax": {}, 186 | "license udi pid CSR1000V sn 9XLGHU4IBMH": {}, 187 | "line con 0": { 188 | "exec-timeout 0 0": {}, 189 | "stopbits 1": {} 190 | }, 191 | "line vty 0 4": { 192 | "login local": {}, 193 | "transport input ssh": {} 194 | }, 195 | "login on-success log": {}, 196 | "memory free low-watermark processor 80557": {}, 197 | "multilink bundle-name authenticated": {}, 198 | "netconf-yang": {}, 199 | "no aaa new-model": {}, 200 | "no logging console": {}, 201 | "no platform punt-keepalive disable-kernel-core": {}, 202 | "ntp server 10.111.10.66": {}, 203 | "platform console virtual": {}, 204 | "platform qfp utilization monitor load 80": {}, 205 | "redundancy": {}, 206 | "restconf": {}, 207 | "service call-home": {}, 208 | "service timestamps debug datetime msec": {}, 209 | "service timestamps log datetime msec": {}, 210 | "spanning-tree extend system-id": {}, 211 | "subscriber templating": {}, 212 | "username cisco privilege 15 secret 9 $9$COf3Q4xfzT.JxE$L3hvSkDv874Qrh8Hzdv/rPQjLNOjreYG2ocffHG7rls": {}, 213 | "username developer privilege 15 secret 9 $9$fhUXi6Xg438iAE$..VhXRCHiDQy3K2zmZUl9iZLbQJ9wpUtQZwQxSRESc2": {}, 214 | "username gbullien secret 9 $9$7di5u25gpvdkD.$Zof9GsN7yyyGkrjWm8SY.6Vu6vl6V/.gsBfsHBq/6MY": {}, 215 | "username gmartin secret 9 $9$6a5sG7li2N00ak$B0kAc6dHZDIsv9R2U9bHGueSXlPFle8Dn0DhLbnC0qo": {}, 216 | "username jbutcher secret 9 $9$dkv67x8BcUUfC.$rfs2QDBgq7aiBA9SSwdwfJ.HJ040qzdMu11VOphfCVc": {}, 217 | "username jpatterson secret 9 $9$mb98uHjTdhYCzE$6nZnLbamF75.wcdAshXOftU54GzGgaQOFs/12l9k0nM": {}, 218 | "username jrtolkien secret 9 $9$Fr6U3HGpp6yAfE$FA.s.OGKTWF4dRc356nswcJjWVNJRJIQr6iinu98K8E": {}, 219 | "username root privilege 15 secret 9 $9$FfUDIPBFcs03AE$MyLIWEuiRle8p3yGflAGTcrJA6BUUh/oWtyyfoMQXSI": {}, 220 | "username tclancy secret 9 $9$zyzussdQGTrfZE$ybUqt04gkdAfI1pLyDNjRZWED7A7EKt9Ixn93dcktmU": {}, 221 | "version 16.11": {}, 222 | "vrf definition blue": { 223 | "address-family ipv4": {}, 224 | "address-family ipv6": {}, 225 | "description Blue VRF": {}, 226 | "exit-address-family": {}, 227 | "rd 1:410": {} 228 | }, 229 | "vrf definition green": { 230 | "address-family ipv4": {}, 231 | "address-family ipv6": {}, 232 | "description Green VRF": {}, 233 | "exit-address-family": {}, 234 | "rd 1:420": {} 235 | }, 236 | "vrf definition mypod": { 237 | "address-family ipv4": {}, 238 | "address-family ipv6": {}, 239 | "description mypod VRF": {}, 240 | "exit-address-family": {}, 241 | "rd 1:50": {} 242 | }, 243 | "vrf definition red": { 244 | "address-family ipv4": {}, 245 | "address-family ipv6": {}, 246 | "description Red VRF": {}, 247 | "exit-address-family": {}, 248 | "rd 1:400": {} 249 | } 250 | } -------------------------------------------------------------------------------- /sample_gold_config/config_nxos_sbx-n9kv-ao_ops.txt: -------------------------------------------------------------------------------- 1 | { 2 | "Thanks for stopping by.": {}, 3 | "The following programmability features are already enabled:": { 4 | "- NETCONF, RESTCONF, gRPC": {}, 5 | "- NX-API": {}, 6 | "- Native NX-OS and OpenConfig YANG Models": {} 7 | }, 8 | "This is a shared sandbox available for anyone to use to": {}, 9 | "Welcome to the DevNet Always On Sandbox for Open NX-OS": {}, 10 | "^": {}, 11 | "aaa group server radius AAA-Radius-Group": { 12 | "server 172.16.1.12": {}, 13 | "server 172.16.1.13": {}, 14 | "source-interface mgmt0": {}, 15 | "use-vrf management": {} 16 | }, 17 | "banner motd ^": {}, 18 | "boot nxos bootflash:/nxos.9.2.1.bin": {}, 19 | "copp profile strict": {}, 20 | "feature bash-shell": {}, 21 | "feature bgp": {}, 22 | "feature grpc": {}, 23 | "feature interface-vlan": {}, 24 | "feature netconf": {}, 25 | "feature nxapi": {}, 26 | "feature nxsdk": {}, 27 | "feature ospf": {}, 28 | "feature restconf": {}, 29 | "feature scp-server": {}, 30 | "hostname sbx-n9kv-ao": {}, 31 | "interface Ethernet1/1": { 32 | "channel-group 11": {}, 33 | "switchport mode trunk": {}, 34 | "switchport trunk allowed vlan 100-110": {} 35 | }, 36 | "interface Ethernet1/10": {}, 37 | "interface Ethernet1/100": {}, 38 | "interface Ethernet1/101": {}, 39 | "interface Ethernet1/102": {}, 40 | "interface Ethernet1/103": {}, 41 | "interface Ethernet1/104": {}, 42 | "interface Ethernet1/105": {}, 43 | "interface Ethernet1/106": {}, 44 | "interface Ethernet1/107": {}, 45 | "interface Ethernet1/108": {}, 46 | "interface Ethernet1/109": {}, 47 | "interface Ethernet1/11": {}, 48 | "interface Ethernet1/110": {}, 49 | "interface Ethernet1/111": {}, 50 | "interface Ethernet1/112": {}, 51 | "interface Ethernet1/113": {}, 52 | "interface Ethernet1/114": {}, 53 | "interface Ethernet1/115": {}, 54 | "interface Ethernet1/116": {}, 55 | "interface Ethernet1/117": {}, 56 | "interface Ethernet1/118": {}, 57 | "interface Ethernet1/119": {}, 58 | "interface Ethernet1/12": {}, 59 | "interface Ethernet1/120": {}, 60 | "interface Ethernet1/121": {}, 61 | "interface Ethernet1/122": {}, 62 | "interface Ethernet1/123": {}, 63 | "interface Ethernet1/124": {}, 64 | "interface Ethernet1/125": {}, 65 | "interface Ethernet1/126": {}, 66 | "interface Ethernet1/127": {}, 67 | "interface Ethernet1/128": {}, 68 | "interface Ethernet1/13": {}, 69 | "interface Ethernet1/14": {}, 70 | "interface Ethernet1/15": {}, 71 | "interface Ethernet1/16": {}, 72 | "interface Ethernet1/17": {}, 73 | "interface Ethernet1/18": {}, 74 | "interface Ethernet1/19": {}, 75 | "interface Ethernet1/2": { 76 | "channel-group 11": {}, 77 | "switchport mode trunk": {}, 78 | "switchport trunk allowed vlan 100-110": {} 79 | }, 80 | "interface Ethernet1/20": {}, 81 | "interface Ethernet1/21": {}, 82 | "interface Ethernet1/22": {}, 83 | "interface Ethernet1/23": {}, 84 | "interface Ethernet1/24": {}, 85 | "interface Ethernet1/25": {}, 86 | "interface Ethernet1/26": {}, 87 | "interface Ethernet1/27": {}, 88 | "interface Ethernet1/28": {}, 89 | "interface Ethernet1/29": {}, 90 | "interface Ethernet1/3": {}, 91 | "interface Ethernet1/30": {}, 92 | "interface Ethernet1/31": {}, 93 | "interface Ethernet1/32": {}, 94 | "interface Ethernet1/33": {}, 95 | "interface Ethernet1/34": {}, 96 | "interface Ethernet1/35": {}, 97 | "interface Ethernet1/36": {}, 98 | "interface Ethernet1/37": {}, 99 | "interface Ethernet1/38": {}, 100 | "interface Ethernet1/39": {}, 101 | "interface Ethernet1/4": {}, 102 | "interface Ethernet1/40": {}, 103 | "interface Ethernet1/41": {}, 104 | "interface Ethernet1/42": {}, 105 | "interface Ethernet1/43": {}, 106 | "interface Ethernet1/44": {}, 107 | "interface Ethernet1/45": {}, 108 | "interface Ethernet1/46": {}, 109 | "interface Ethernet1/47": {}, 110 | "interface Ethernet1/48": {}, 111 | "interface Ethernet1/49": {}, 112 | "interface Ethernet1/5": { 113 | "description L3 Link": {}, 114 | "ip address 172.16.1.1/30": {}, 115 | "ip ospf network broadcast": {}, 116 | "ip router ospf 1 area 0.0.0.0": {}, 117 | "no ip ospf passive-interface": {}, 118 | "no shutdown": {}, 119 | "no switchport": {} 120 | }, 121 | "interface Ethernet1/50": {}, 122 | "interface Ethernet1/51": {}, 123 | "interface Ethernet1/52": {}, 124 | "interface Ethernet1/53": {}, 125 | "interface Ethernet1/54": {}, 126 | "interface Ethernet1/55": {}, 127 | "interface Ethernet1/56": {}, 128 | "interface Ethernet1/57": {}, 129 | "interface Ethernet1/58": {}, 130 | "interface Ethernet1/59": {}, 131 | "interface Ethernet1/6": {}, 132 | "interface Ethernet1/60": {}, 133 | "interface Ethernet1/61": {}, 134 | "interface Ethernet1/62": {}, 135 | "interface Ethernet1/63": {}, 136 | "interface Ethernet1/64": {}, 137 | "interface Ethernet1/65": {}, 138 | "interface Ethernet1/66": {}, 139 | "interface Ethernet1/67": {}, 140 | "interface Ethernet1/68": {}, 141 | "interface Ethernet1/69": {}, 142 | "interface Ethernet1/7": {}, 143 | "interface Ethernet1/70": {}, 144 | "interface Ethernet1/71": {}, 145 | "interface Ethernet1/72": {}, 146 | "interface Ethernet1/73": {}, 147 | "interface Ethernet1/74": {}, 148 | "interface Ethernet1/75": {}, 149 | "interface Ethernet1/76": {}, 150 | "interface Ethernet1/77": {}, 151 | "interface Ethernet1/78": {}, 152 | "interface Ethernet1/79": {}, 153 | "interface Ethernet1/8": {}, 154 | "interface Ethernet1/80": {}, 155 | "interface Ethernet1/81": {}, 156 | "interface Ethernet1/82": {}, 157 | "interface Ethernet1/83": {}, 158 | "interface Ethernet1/84": {}, 159 | "interface Ethernet1/85": {}, 160 | "interface Ethernet1/86": {}, 161 | "interface Ethernet1/87": {}, 162 | "interface Ethernet1/88": {}, 163 | "interface Ethernet1/89": {}, 164 | "interface Ethernet1/9": {}, 165 | "interface Ethernet1/90": {}, 166 | "interface Ethernet1/91": {}, 167 | "interface Ethernet1/92": {}, 168 | "interface Ethernet1/93": {}, 169 | "interface Ethernet1/94": {}, 170 | "interface Ethernet1/95": {}, 171 | "interface Ethernet1/96": {}, 172 | "interface Ethernet1/97": {}, 173 | "interface Ethernet1/98": {}, 174 | "interface Ethernet1/99": {}, 175 | "interface Vlan1": {}, 176 | "interface Vlan100": { 177 | "description mgmt svi - DEMO PLEASE DON'T TOUCH": {}, 178 | "ip address 172.16.100.1/24": {}, 179 | "ip router ospf 1 area 0.0.0.0": {}, 180 | "no shutdown": {} 181 | }, 182 | "interface Vlan101": { 183 | "description prod svi - DEMO PLEASE DON'T TOUCH": {}, 184 | "ip address 172.16.101.1/24": {}, 185 | "ip router ospf 1 area 0.0.0.0": {}, 186 | "no shutdown": {} 187 | }, 188 | "interface Vlan102": { 189 | "description dev svi - DEMO PLEASE DON'T TOUCH": {}, 190 | "ip address 172.16.102.1/24": {}, 191 | "ip router ospf 1 area 0.0.0.0": {}, 192 | "no shutdown": {} 193 | }, 194 | "interface Vlan103": { 195 | "description test svi - DEMO PLEASE DON'T TOUCH": {}, 196 | "ip address 172.16.103.1/24": {}, 197 | "ip router ospf 1 area 0.0.0.0": {}, 198 | "no shutdown": {} 199 | }, 200 | "interface Vlan104": { 201 | "description security svi - DEMO PLEASE DON'T TOUCH": {}, 202 | "ip address 172.16.104.1/24": {}, 203 | "ip router ospf 1 area 0.0.0.0": {}, 204 | "no shutdown": {} 205 | }, 206 | "interface Vlan105": { 207 | "description iot svi - DEMO PLEASE DON'T TOUCH": {}, 208 | "ip address 172.16.105.1/24": {}, 209 | "ip router ospf 1 area 0.0.0.0": {}, 210 | "no shutdown": {} 211 | }, 212 | "interface loopback1": { 213 | "ip address 172.16.0.1/32": {} 214 | }, 215 | "interface mgmt0": { 216 | "description DO NOT TOUCH CONFIG ON THIS INTERFACE": {}, 217 | "ip address 10.10.20.95/24": {}, 218 | "vrf member management": {} 219 | }, 220 | "interface port-channel11": { 221 | "switchport mode trunk": {}, 222 | "switchport trunk allowed vlan 100-110": {} 223 | }, 224 | "ip domain-lookup": {}, 225 | "keep this in mind as you use it, and respect others use.": {}, 226 | "line console": { 227 | "exec-timeout 0": {}, 228 | "terminal width 511": {} 229 | }, 230 | "line vty": {}, 231 | "no logging console": {}, 232 | "ntp authenticate": {}, 233 | "ntp authentication-key 1 md5 QPTFmtc 7": {}, 234 | "ntp peer 172.16.1.11 use-vrf management key 1": {}, 235 | "ntp source-interface mgmt0": {}, 236 | "radius-server host 172.16.1.12 key 7 \"VwritosWsgsziGio\" authentication accounting": {}, 237 | "radius-server host 172.16.1.13 key 7 \"VwritosWsgsziGio\" authentication accounting": {}, 238 | "rmon event 1 description FATAL(1) owner PMON@FATAL": {}, 239 | "rmon event 2 description CRITICAL(2) owner PMON@CRITICAL": {}, 240 | "rmon event 3 description ERROR(3) owner PMON@ERROR": {}, 241 | "rmon event 4 description WARNING(4) owner PMON@WARNING": {}, 242 | "rmon event 5 description INFORMATION(5) owner PMON@INFO": {}, 243 | "router bgp 65535": { 244 | "address-family ipv4 unicast": { 245 | "network 172.16.0.0/16": {} 246 | }, 247 | "neighbor 172.16.0.2": { 248 | "remote-as 65535": {} 249 | } 250 | }, 251 | "router ospf 1": { 252 | "passive-interface default": {}, 253 | "router-id 172.16.0.1": {} 254 | }, 255 | "snmp-server community DevNetSandboxReadSNMP group network-operator": {}, 256 | "snmp-server community DevNetSandboxWriteSNMP group network-admin": {}, 257 | "snmp-server contact DevNet-Sandbox": {}, 258 | "snmp-server enable traps aaa server-state-change": {}, 259 | "snmp-server enable traps bridge newroot": {}, 260 | "snmp-server enable traps bridge topologychange": {}, 261 | "snmp-server enable traps callhome event-notify": {}, 262 | "snmp-server enable traps callhome smtp-send-fail": {}, 263 | "snmp-server enable traps cfs merge-failure": {}, 264 | "snmp-server enable traps cfs state-change-notif": {}, 265 | "snmp-server enable traps config ccmCLIRunningConfigChanged": {}, 266 | "snmp-server enable traps feature-control FeatureOpStatusChange": {}, 267 | "snmp-server enable traps feature-control ciscoFeatOpStatusChange": {}, 268 | "snmp-server enable traps link cisco-xcvr-mon-status-chg": {}, 269 | "snmp-server enable traps mmode cseMaintModeChangeNotify": {}, 270 | "snmp-server enable traps mmode cseNormalModeChangeNotify": {}, 271 | "snmp-server enable traps snmp authentication": {}, 272 | "snmp-server enable traps stpx inconsistency": {}, 273 | "snmp-server enable traps stpx loop-inconsistency": {}, 274 | "snmp-server enable traps stpx root-inconsistency": {}, 275 | "snmp-server enable traps sysmgr cseFailSwCoreNotifyExtended": {}, 276 | "snmp-server enable traps system Clock-change-notification": {}, 277 | "snmp-server enable traps vtp notifs": {}, 278 | "snmp-server enable traps vtp vlancreate": {}, 279 | "snmp-server enable traps vtp vlandelete": {}, 280 | "snmp-server location Always-On-Sandbox": {}, 281 | "snmp-server source-interface traps mgmt0": {}, 282 | "snmp-server user admin network-admin auth md5 0x16279c7eca7d5524934154dd17520e0c priv 0x16279c7eca7d5524934154dd17520e0c localizedkey": {}, 283 | "test APIs, explore features, and test scripts. Please": {}, 284 | "username admin password 5 $5$XTwcELLF$8Ybmi8D344YTimHFvg02mxS/KeLE8klvBgTqgYjvfL7 role network-admin": {}, 285 | "vdc sbx-n9kv-ao id 1": { 286 | "limit-resource m4route-mem minimum 58 maximum 58": {}, 287 | "limit-resource m6route-mem minimum 8 maximum 8": {}, 288 | "limit-resource port-channel minimum 0 maximum 511": {}, 289 | "limit-resource u4route-mem minimum 248 maximum 248": {}, 290 | "limit-resource u6route-mem minimum 96 maximum 96": {}, 291 | "limit-resource vlan minimum 16 maximum 4094": {}, 292 | "limit-resource vrf minimum 2 maximum 4096": {} 293 | }, 294 | "version 9.2(1) Bios:version": {}, 295 | "vlan 1,100-105": {}, 296 | "vlan 100": { 297 | "name mgmt": {} 298 | }, 299 | "vlan 101": { 300 | "name prod": {} 301 | }, 302 | "vlan 102": { 303 | "name dev": {} 304 | }, 305 | "vlan 103": { 306 | "name test": {} 307 | }, 308 | "vlan 104": { 309 | "name security": {} 310 | }, 311 | "vlan 105": { 312 | "name iot": {} 313 | }, 314 | "vrf context management": { 315 | "ip route 0.0.0.0/0 10.10.20.254": {} 316 | } 317 | } -------------------------------------------------------------------------------- /sample_gold_config/connection_sbx-n9kv-ao.txt: -------------------------------------------------------------------------------- 1 | [2019-06-03 15:40:18,012] +++ sbx-n9kv-ao logfile gold_config/connection_sbx-n9kv-ao.txt +++ 2 | [2019-06-03 15:40:18,012] +++ Unicon plugin nxos +++ 3 | 4 | Welcome to the DevNet Always On Sandbox for Open NX-OS 5 | 6 | This is a shared sandbox available for anyone to use to 7 | test APIs, explore features, and test scripts. Please 8 | keep this in mind as you use it, and respect others use. 9 | 10 | The following programmability features are already enabled: 11 | - NX-API 12 | - NETCONF, RESTCONF, gRPC 13 | - Native NX-OS and OpenConfig YANG Models 14 | 15 | Thanks for stopping by. 16 | 17 | [2019-06-03 15:40:20,198] +++ connection to spawn: ssh -l admin 64.103.37.14 -p 8181, id: 4540657112 +++ 18 | [2019-06-03 15:40:20,199] connection to sbx-n9kv-ao 19 | Password: 20 | 21 | Cisco NX-OS Software 22 | Copyright (c) 2002-2018, Cisco Systems, Inc. All rights reserved. 23 | Nexus 9000v software ("Nexus 9000v Software") and related documentation, 24 | files or other reference materials ("Documentation") are 25 | the proprietary property and confidential information of Cisco 26 | Systems, Inc. ("Cisco") and are protected, without limitation, 27 | pursuant to United States and International copyright and trademark 28 | laws in the applicable jurisdiction which provide civil and criminal 29 | penalties for copying or distribution without Cisco's authorization. 30 | 31 | Any use or disclosure, in whole or in part, of the Nexus 9000v Software 32 | or Documentation to any third party for any purposes is expressly 33 | prohibited except as otherwise authorized by Cisco in writing. 34 | The copyrights to certain works contained herein are owned by other 35 | third parties and are used and distributed under license. Some parts 36 | of this software may be covered under the GNU Public License or the 37 | GNU Lesser General Public License. A copy of each such license is 38 | available at 39 | http://www.gnu.org/licenses/gpl.html and 40 | http://www.gnu.org/licenses/lgpl.html 41 | *************************************************************************** 42 | * Nexus 9000v is strictly limited to use for evaluation, demonstration * 43 | * and NX-OS education. Any use or disclosure, in whole or in part of * 44 | * the Nexus 9000v Software or Documentation to any third party for any * 45 | * purposes is expressly prohibited except as otherwise authorized by * 46 | * Cisco in writing. * 47 | *************************************************************************** 48 | sbx-n9kv-ao# 49 | [2019-06-03 15:40:22,645] +++ initializing handle +++ 50 | [2019-06-03 15:40:22,646] +++ sbx-n9kv-ao: executing command 'term length 0' +++ 51 | term length 0 52 | sbx-n9kv-ao# 53 | [2019-06-03 15:40:22,915] +++ sbx-n9kv-ao: executing command 'term width 511' +++ 54 | term width 511 55 | sbx-n9kv-ao# 56 | [2019-06-03 15:40:23,188] +++ sbx-n9kv-ao: executing command 'terminal session-timeout 0' +++ 57 | terminal session-timeout 0 58 | sbx-n9kv-ao# 59 | [2019-06-03 15:40:24,458] +++ sbx-n9kv-ao: config +++ 60 | config term 61 | Enter configuration commands, one per line. End with CNTL/Z. 62 | sbx-n9kv-ao(config)# no logging console 63 | sbx-n9kv-ao(config)# line console 64 | sbx-n9kv-ao(config-console)# exec-timeout 0 65 | sbx-n9kv-ao(config-console)# terminal width 511 66 | sbx-n9kv-ao(config-console)# end 67 | sbx-n9kv-ao# 68 | [2019-06-03 15:41:03,330] +++ sbx-n9kv-ao: executing command 'show running-config' +++ 69 | show running-config 70 | 71 | !Command: show running-config 72 | !Running configuration last done at: Mon Jun 3 19:59:28 2019 73 | !Time: Mon Jun 3 20:00:01 2019 74 | 75 | version 9.2(1) Bios:version 76 | hostname sbx-n9kv-ao 77 | vdc sbx-n9kv-ao id 1 78 | limit-resource vlan minimum 16 maximum 4094 79 | limit-resource vrf minimum 2 maximum 4096 80 | limit-resource port-channel minimum 0 maximum 511 81 | limit-resource u4route-mem minimum 248 maximum 248 82 | limit-resource u6route-mem minimum 96 maximum 96 83 | limit-resource m4route-mem minimum 58 maximum 58 84 | limit-resource m6route-mem minimum 8 maximum 8 85 | 86 | feature nxapi 87 | feature bash-shell 88 | feature scp-server 89 | feature ospf 90 | feature bgp 91 | feature nxsdk 92 | feature netconf 93 | feature restconf 94 | feature grpc 95 | feature interface-vlan 96 | 97 | username admin password 5 $5$XTwcELLF$8Ybmi8D344YTimHFvg02mxS/KeLE8klvBgTqgYjvfL7 role network-admin 98 | 99 | banner motd ^ 100 | Welcome to the DevNet Always On Sandbox for Open NX-OS 101 | 102 | This is a shared sandbox available for anyone to use to 103 | test APIs, explore features, and test scripts. Please 104 | keep this in mind as you use it, and respect others use. 105 | 106 | The following programmability features are already enabled: 107 | - NX-API 108 | - NETCONF, RESTCONF, gRPC 109 | - Native NX-OS and OpenConfig YANG Models 110 | 111 | Thanks for stopping by. 112 | ^ 113 | 114 | ip domain-lookup 115 | radius-server host 172.16.1.12 key 7 "VwritosWsgsziGio" authentication accounting 116 | radius-server host 172.16.1.13 key 7 "VwritosWsgsziGio" authentication accounting 117 | aaa group server radius AAA-Radius-Group 118 | server 172.16.1.12 119 | server 172.16.1.13 120 | use-vrf management 121 | source-interface mgmt0 122 | copp profile strict 123 | snmp-server contact DevNet-Sandbox 124 | snmp-server location Always-On-Sandbox 125 | snmp-server source-interface traps mgmt0 126 | snmp-server user admin network-admin auth md5 0x16279c7eca7d5524934154dd17520e0c priv 0x16279c7eca7d5524934154dd17520e0c localizedkey 127 | rmon event 1 description FATAL(1) owner PMON@FATAL 128 | rmon event 2 description CRITICAL(2) owner PMON@CRITICAL 129 | rmon event 3 description ERROR(3) owner PMON@ERROR 130 | rmon event 4 description WARNING(4) owner PMON@WARNING 131 | rmon event 5 description INFORMATION(5) owner PMON@INFO 132 | snmp-server enable traps callhome event-notify 133 | snmp-server enable traps callhome smtp-send-fail 134 | snmp-server enable traps cfs state-change-notif 135 | snmp-server enable traps cfs merge-failure 136 | snmp-server enable traps aaa server-state-change 137 | snmp-server enable traps feature-control FeatureOpStatusChange 138 | snmp-server enable traps sysmgr cseFailSwCoreNotifyExtended 139 | snmp-server enable traps config ccmCLIRunningConfigChanged 140 | snmp-server enable traps snmp authentication 141 | snmp-server enable traps link cisco-xcvr-mon-status-chg 142 | snmp-server enable traps vtp notifs 143 | snmp-server enable traps vtp vlancreate 144 | snmp-server enable traps vtp vlandelete 145 | snmp-server enable traps bridge newroot 146 | snmp-server enable traps bridge topologychange 147 | snmp-server enable traps stpx inconsistency 148 | snmp-server enable traps stpx root-inconsistency 149 | snmp-server enable traps stpx loop-inconsistency 150 | snmp-server enable traps system Clock-change-notification 151 | snmp-server enable traps feature-control ciscoFeatOpStatusChange 152 | snmp-server enable traps mmode cseNormalModeChangeNotify 153 | snmp-server enable traps mmode cseMaintModeChangeNotify 154 | snmp-server community DevNetSandboxWriteSNMP group network-admin 155 | snmp-server community DevNetSandboxReadSNMP group network-operator 156 | ntp peer 172.16.1.11 use-vrf management key 1 157 | ntp source-interface mgmt0 158 | ntp authenticate 159 | ntp authentication-key 1 md5 QPTFmtc 7 160 | 161 | vlan 1,100-105 162 | vlan 100 163 | name mgmt 164 | vlan 101 165 | name prod 166 | vlan 102 167 | name dev 168 | vlan 103 169 | name test 170 | vlan 104 171 | name security 172 | vlan 105 173 | name iot 174 | 175 | vrf context management 176 | ip route 0.0.0.0/0 10.10.20.254 177 | 178 | interface Vlan1 179 | 180 | interface Vlan100 181 | description mgmt svi - DEMO PLEASE DON'T TOUCH 182 | no shutdown 183 | ip address 172.16.100.1/24 184 | ip router ospf 1 area 0.0.0.0 185 | 186 | interface Vlan101 187 | description prod svi - DEMO PLEASE DON'T TOUCH 188 | no shutdown 189 | ip address 172.16.101.1/24 190 | ip router ospf 1 area 0.0.0.0 191 | 192 | interface Vlan102 193 | description dev svi - DEMO PLEASE DON'T TOUCH 194 | no shutdown 195 | ip address 172.16.102.1/24 196 | ip router ospf 1 area 0.0.0.0 197 | 198 | interface Vlan103 199 | description test svi - DEMO PLEASE DON'T TOUCH 200 | no shutdown 201 | ip address 172.16.103.1/24 202 | ip router ospf 1 area 0.0.0.0 203 | 204 | interface Vlan104 205 | description security svi - DEMO PLEASE DON'T TOUCH 206 | no shutdown 207 | ip address 172.16.104.1/24 208 | ip router ospf 1 area 0.0.0.0 209 | 210 | interface Vlan105 211 | description iot svi - DEMO PLEASE DON'T TOUCH 212 | no shutdown 213 | ip address 172.16.105.1/24 214 | ip router ospf 1 area 0.0.0.0 215 | 216 | interface port-channel11 217 | switchport mode trunk 218 | switchport trunk allowed vlan 100-110 219 | 220 | interface Ethernet1/1 221 | switchport mode trunk 222 | switchport trunk allowed vlan 100-110 223 | channel-group 11 224 | 225 | interface Ethernet1/2 226 | switchport mode trunk 227 | switchport trunk allowed vlan 100-110 228 | channel-group 11 229 | 230 | interface Ethernet1/3 231 | 232 | interface Ethernet1/4 233 | 234 | interface Ethernet1/5 235 | description L3 Link 236 | no switchport 237 | ip address 172.16.1.1/30 238 | ip ospf network broadcast 239 | no ip ospf passive-interface 240 | ip router ospf 1 area 0.0.0.0 241 | no shutdown 242 | 243 | interface Ethernet1/6 244 | 245 | interface Ethernet1/7 246 | 247 | interface Ethernet1/8 248 | 249 | interface Ethernet1/9 250 | 251 | interface Ethernet1/10 252 | 253 | interface Ethernet1/11 254 | 255 | interface Ethernet1/12 256 | 257 | interface Ethernet1/13 258 | 259 | interface Ethernet1/14 260 | 261 | interface Ethernet1/15 262 | 263 | interface Ethernet1/16 264 | 265 | interface Ethernet1/17 266 | 267 | interface Ethernet1/18 268 | 269 | interface Ethernet1/19 270 | 271 | interface Ethernet1/20 272 | 273 | interface Ethernet1/21 274 | 275 | interface Ethernet1/22 276 | 277 | interface Ethernet1/23 278 | 279 | interface Ethernet1/24 280 | 281 | interface Ethernet1/25 282 | 283 | interface Ethernet1/26 284 | 285 | interface Ethernet1/27 286 | 287 | interface Ethernet1/28 288 | 289 | interface Ethernet1/29 290 | 291 | interface Ethernet1/30 292 | 293 | interface Ethernet1/31 294 | 295 | interface Ethernet1/32 296 | 297 | interface Ethernet1/33 298 | 299 | interface Ethernet1/34 300 | 301 | interface Ethernet1/35 302 | 303 | interface Ethernet1/36 304 | 305 | interface Ethernet1/37 306 | 307 | interface Ethernet1/38 308 | 309 | interface Ethernet1/39 310 | 311 | interface Ethernet1/40 312 | 313 | interface Ethernet1/41 314 | 315 | interface Ethernet1/42 316 | 317 | interface Ethernet1/43 318 | 319 | interface Ethernet1/44 320 | 321 | interface Ethernet1/45 322 | 323 | interface Ethernet1/46 324 | 325 | interface Ethernet1/47 326 | 327 | interface Ethernet1/48 328 | 329 | interface Ethernet1/49 330 | 331 | interface Ethernet1/50 332 | 333 | interface Ethernet1/51 334 | 335 | interface Ethernet1/52 336 | 337 | interface Ethernet1/53 338 | 339 | interface Ethernet1/54 340 | 341 | interface Ethernet1/55 342 | 343 | interface Ethernet1/56 344 | 345 | interface Ethernet1/57 346 | 347 | interface Ethernet1/58 348 | 349 | interface Ethernet1/59 350 | 351 | interface Ethernet1/60 352 | 353 | interface Ethernet1/61 354 | 355 | interface Ethernet1/62 356 | 357 | interface Ethernet1/63 358 | 359 | interface Ethernet1/64 360 | 361 | interface Ethernet1/65 362 | 363 | interface Ethernet1/66 364 | 365 | interface Ethernet1/67 366 | 367 | interface Ethernet1/68 368 | 369 | interface Ethernet1/69 370 | 371 | interface Ethernet1/70 372 | 373 | interface Ethernet1/71 374 | 375 | interface Ethernet1/72 376 | 377 | interface Ethernet1/73 378 | 379 | interface Ethernet1/74 380 | 381 | interface Ethernet1/75 382 | 383 | interface Ethernet1/76 384 | 385 | interface Ethernet1/77 386 | 387 | interface Ethernet1/78 388 | 389 | interface Ethernet1/79 390 | 391 | interface Ethernet1/80 392 | 393 | interface Ethernet1/81 394 | 395 | interface Ethernet1/82 396 | 397 | interface Ethernet1/83 398 | 399 | interface Ethernet1/84 400 | 401 | interface Ethernet1/85 402 | 403 | interface Ethernet1/86 404 | 405 | interface Ethernet1/87 406 | 407 | interface Ethernet1/88 408 | 409 | interface Ethernet1/89 410 | 411 | interface Ethernet1/90 412 | 413 | interface Ethernet1/91 414 | 415 | interface Ethernet1/92 416 | 417 | interface Ethernet1/93 418 | 419 | interface Ethernet1/94 420 | 421 | interface Ethernet1/95 422 | 423 | interface Ethernet1/96 424 | 425 | interface Ethernet1/97 426 | 427 | interface Ethernet1/98 428 | 429 | interface Ethernet1/99 430 | 431 | interface Ethernet1/100 432 | 433 | interface Ethernet1/101 434 | 435 | interface Ethernet1/102 436 | 437 | interface Ethernet1/103 438 | 439 | interface Ethernet1/104 440 | 441 | interface Ethernet1/105 442 | 443 | interface Ethernet1/106 444 | 445 | interface Ethernet1/107 446 | 447 | interface Ethernet1/108 448 | 449 | interface Ethernet1/109 450 | 451 | interface Ethernet1/110 452 | 453 | interface Ethernet1/111 454 | 455 | interface Ethernet1/112 456 | 457 | interface Ethernet1/113 458 | 459 | interface Ethernet1/114 460 | 461 | interface Ethernet1/115 462 | 463 | interface Ethernet1/116 464 | 465 | interface Ethernet1/117 466 | 467 | interface Ethernet1/118 468 | 469 | interface Ethernet1/119 470 | 471 | interface Ethernet1/120 472 | 473 | interface Ethernet1/121 474 | 475 | interface Ethernet1/122 476 | 477 | interface Ethernet1/123 478 | 479 | interface Ethernet1/124 480 | 481 | interface Ethernet1/125 482 | 483 | interface Ethernet1/126 484 | 485 | interface Ethernet1/127 486 | 487 | interface Ethernet1/128 488 | 489 | interface mgmt0 490 | description DO NOT TOUCH CONFIG ON THIS INTERFACE 491 | vrf member management 492 | ip address 10.10.20.95/24 493 | 494 | interface loopback1 495 | ip address 172.16.0.1/32 496 | line console 497 | exec-timeout 0 498 | terminal width 511 499 | line vty 500 | boot nxos bootflash:/nxos.9.2.1.bin 501 | router ospf 1 502 | router-id 172.16.0.1 503 | passive-interface default 504 | router bgp 65535 505 | address-family ipv4 unicast 506 | network 172.16.0.0/16 507 | neighbor 172.16.0.2 508 | remote-as 65535 509 | no logging console 510 | 511 | 512 | sbx-n9kv-ao# 513 | -------------------------------------------------------------------------------- /sample_gold_config/connection_csr1000v-1.txt: -------------------------------------------------------------------------------- 1 | [2019-06-03 15:40:08,309] +++ csr1000v-1 logfile gold_config/connection_csr1000v-1.txt +++ 2 | [2019-06-03 15:40:08,309] +++ Unicon plugin iosxe +++ 3 | Password: 4 | [2019-06-03 15:40:13,128] +++ connection to spawn: ssh -l developer 64.103.37.8 -p 8181, id: 4540817248 +++ 5 | [2019-06-03 15:40:13,128] connection to csr1000v-1 6 | 7 | 8 | Welcome to the DevNet Sandbox for CSR1000v and IOS XE 9 | 10 | The following programmability features are already enabled: 11 | - NETCONF 12 | - RESTCONF 13 | 14 | Thanks for stopping by. 15 | 16 | 17 | 18 | csr1000v-1# 19 | [2019-06-03 15:40:14,131] +++ initializing handle +++ 20 | [2019-06-03 15:40:14,133] +++ csr1000v-1: executing command 'term length 0' +++ 21 | term length 0 22 | csr1000v-1# 23 | [2019-06-03 15:40:14,550] +++ csr1000v-1: executing command 'term width 0' +++ 24 | term width 0 25 | csr1000v-1# 26 | [2019-06-03 15:40:14,864] +++ csr1000v-1: executing command 'show version' +++ 27 | show version 28 | Cisco IOS XE Software, Version 16.11.01a 29 | Cisco IOS Software [Gibraltar], Virtual XE Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 16.11.1a, RELEASE SOFTWARE (fc1) 30 | Technical Support: http://www.cisco.com/techsupport 31 | Copyright (c) 1986-2019 by Cisco Systems, Inc. 32 | Compiled Thu 11-Apr-19 23:59 by mcpre 33 | 34 | 35 | Cisco IOS-XE software, Copyright (c) 2005-2019 by cisco Systems, Inc. 36 | All rights reserved. Certain components of Cisco IOS-XE software are 37 | licensed under the GNU General Public License ("GPL") Version 2.0. The 38 | software code licensed under GPL Version 2.0 is free software that comes 39 | with ABSOLUTELY NO WARRANTY. You can redistribute and/or modify such 40 | GPL code under the terms of GPL Version 2.0. For more details, see the 41 | documentation or "License Notice" file accompanying the IOS-XE software, 42 | or the applicable URL provided on the flyer accompanying the IOS-XE 43 | software. 44 | 45 | 46 | ROM: IOS-XE ROMMON 47 | 48 | csr1000v-1 uptime is 1 week, 5 days, 19 hours, 39 minutes 49 | Uptime for this control processor is 1 week, 5 days, 19 hours, 40 minutes 50 | System returned to ROM by reload 51 | System image file is "bootflash:packages.conf" 52 | Last reload reason: reload 53 | 54 | 55 | 56 | This product contains cryptographic features and is subject to United 57 | States and local country laws governing import, export, transfer and 58 | use. Delivery of Cisco cryptographic products does not imply 59 | third-party authority to import, export, distribute or use encryption. 60 | Importers, exporters, distributors and users are responsible for 61 | compliance with U.S. and local country laws. By using this product you 62 | agree to comply with applicable laws and regulations. If you are unable 63 | to comply with U.S. and local laws, return this product immediately. 64 | 65 | A summary of U.S. laws governing Cisco cryptographic products may be found at: 66 | http://www.cisco.com/wwl/export/crypto/tool/stqrg.html 67 | 68 | If you require further assistance please contact us by sending email to 69 | export@cisco.com. 70 | 71 | License Level: ax 72 | License Type: N/A(Smart License Enabled) 73 | Next reload license Level: ax 74 | 75 | 76 | Smart Licensing Status: UNREGISTERED/No Licenses in Use 77 | 78 | cisco CSR1000V (VXE) processor (revision VXE) with 2378575K/3075K bytes of memory. 79 | Processor board ID 9XLGHU4IBMH 80 | 3 Gigabit Ethernet interfaces 81 | 32768K bytes of non-volatile configuration memory. 82 | 8112832K bytes of physical memory. 83 | 7774207K bytes of virtual hard disk at bootflash:. 84 | 0K bytes of WebUI ODM Files at webui:. 85 | 86 | Configuration register is 0x2102 87 | 88 | csr1000v-1# 89 | [2019-06-03 15:40:15,169] +++ csr1000v-1: config +++ 90 | config term 91 | Enter configuration commands, one per line. End with CNTL/Z. 92 | csr1000v-1(config)#no logging console 93 | csr1000v-1(config)#line console 0 94 | csr1000v-1(config-line)#exec-timeout 0 95 | csr1000v-1(config-line)#end 96 | csr1000v-1# 97 | [2019-06-03 15:41:03,328] +++ csr1000v-1: executing command 'show running-config' +++ 98 | show running-config 99 | Building configuration... 100 | 101 | Current configuration : 9191 bytes 102 | ! 103 | ! Last configuration change at 19:40:19 UTC Mon Jun 3 2019 by developer 104 | ! 105 | version 16.11 106 | service timestamps debug datetime msec 107 | service timestamps log datetime msec 108 | service call-home 109 | platform qfp utilization monitor load 80 110 | no platform punt-keepalive disable-kernel-core 111 | platform console virtual 112 | ! 113 | hostname csr1000v-1 114 | ! 115 | boot-start-marker 116 | boot-end-marker 117 | ! 118 | ! 119 | vrf definition blue 120 | description Blue VRF 121 | rd 1:410 122 | ! 123 | address-family ipv4 124 | exit-address-family 125 | ! 126 | address-family ipv6 127 | exit-address-family 128 | ! 129 | vrf definition green 130 | description Green VRF 131 | rd 1:420 132 | ! 133 | address-family ipv4 134 | exit-address-family 135 | ! 136 | address-family ipv6 137 | exit-address-family 138 | ! 139 | vrf definition mypod 140 | description mypod VRF 141 | rd 1:50 142 | ! 143 | address-family ipv4 144 | exit-address-family 145 | ! 146 | address-family ipv6 147 | exit-address-family 148 | ! 149 | vrf definition red 150 | description Red VRF 151 | rd 1:400 152 | ! 153 | address-family ipv4 154 | exit-address-family 155 | ! 156 | address-family ipv6 157 | exit-address-family 158 | ! 159 | no logging console 160 | enable secret 9 $9$PvdeTeuxxh0ygk$PSg0GTG2I7bluI51e.IvfEu2uxy56e/9/PgqzFUklso 161 | ! 162 | no aaa new-model 163 | call-home 164 | ! If contact email address in call-home is configured as sch-smart-licensing@cisco.com 165 | ! the email address configured in Cisco Smart License Portal will be used as contact email address to send SCH notifications. 166 | contact-email-addr sch-smart-licensing@cisco.com 167 | profile "CiscoTAC-1" 168 | active 169 | destination transport-method http 170 | no destination transport-method email 171 | ! 172 | ! 173 | ! 174 | ! 175 | ! 176 | ! 177 | ! 178 | ip domain name abc.inc 179 | ! 180 | ! 181 | ! 182 | login on-success log 183 | ! 184 | ! 185 | ! 186 | ! 187 | ! 188 | ! 189 | ! 190 | subscriber templating 191 | ! 192 | ! 193 | ! 194 | ! 195 | ! 196 | ! 197 | multilink bundle-name authenticated 198 | ! 199 | ! 200 | ! 201 | ! 202 | ! 203 | ! 204 | ! 205 | ! 206 | ! 207 | ! 208 | ! 209 | ! 210 | ! 211 | crypto pki trustpoint TP-self-signed-1059130051 212 | enrollment selfsigned 213 | subject-name cn=IOS-Self-Signed-Certificate-1059130051 214 | revocation-check none 215 | rsakeypair TP-self-signed-1059130051 216 | ! 217 | crypto pki trustpoint SLA-TrustPoint 218 | enrollment pkcs12 219 | revocation-check crl 220 | ! 221 | ! 222 | crypto pki certificate chain TP-self-signed-1059130051 223 | certificate self-signed 01 224 | 30820330 30820218 A0030201 02020101 300D0609 2A864886 F70D0101 05050030 225 | 31312F30 2D060355 04031326 494F532D 53656C66 2D536967 6E65642D 43657274 226 | 69666963 6174652D 31303539 31333030 3531301E 170D3139 30353135 31353532 227 | 34345A17 0D333030 31303130 30303030 305A3031 312F302D 06035504 03132649 228 | 4F532D53 656C662D 5369676E 65642D43 65727469 66696361 74652D31 30353931 229 | 33303035 31308201 22300D06 092A8648 86F70D01 01010500 0382010F 00308201 230 | 0A028201 01009DB5 CB46A2CB EF798209 B9E60F24 2AD4F63B 7FAD32C9 DF508833 231 | 27FE8781 CEBE363E 98BC68CB BA681F3A 0C040D0E 138CB708 A63FC4A3 C89DF4F8 232 | 7CEA5995 E2ED50A7 AD593D54 95F91777 63F014AB AA24DC69 94219D45 80C69618 233 | D7353920 3FF45907 A639EC6B 32ED18D5 C943BF84 BCF0EDC6 C9DA7D92 3FA2E781 234 | 4430FC04 94DC7E36 EB55D92A 87996A0B 53139F6D 980F37DC 1FD6A908 9530A59C 235 | 024C3937 8FC6B165 6DDD78AA CBDE26B6 22A3B2CF 1617367F 64F56E10 056873D3 236 | 61BAF65D 9C94D472 3A43EE5B 297DEAB7 5AF892D4 1884C715 BB561B42 D4F22E74 237 | 7DEC1BB3 D8FCD37E E5682FF2 60061E76 DD1BDCEE 0C479896 A013E99D 81C58863 238 | 46BE7467 F4150203 010001A3 53305130 0F060355 1D130101 FF040530 030101FF 239 | 301F0603 551D2304 18301680 14A036FC 136C015A DA5E90D7 4CA8FCCA 0FD3AB11 240 | 4E301D06 03551D0E 04160414 A036FC13 6C015ADA 5E90D74C A8FCCA0F D3AB114E 241 | 300D0609 2A864886 F70D0101 05050003 82010100 125F8C6F 10160B1C CA98F2D9 242 | 34060A9A 2C852783 74940351 A5C3DCC4 18C56177 201DB0FF FD36B74E CC837517 243 | 2131BD4B 221F0821 A936D2CA DC9A73A9 0D1880FD F20C4E92 7B749C16 D2B3BC2D 244 | 7F65B575 44B9A198 FE4F294C A644D77A E68BC8E6 0E0B8223 E20752A5 B1DD7F94 245 | C648B50E 383DE28C 8CBE7144 9737DF7E 562F4937 F981558F 6628D7E9 D92CD668 246 | 783DA025 9547FFC8 3F850FF5 6307126D 8D7AC8F6 BBA1915C F4A3AF91 C8D4BC29 247 | 7F4B5902 F77E0135 9C91120B 8AF47B45 AF71BB7E FCCEF0CF 20266FA8 DD032D0A 248 | 1909438C B48A4378 42C78B33 84B3C73D 7B847DBD 7F540522 4F708603 666D8609 249 | 11D3D218 05E1A2BF C98EDE32 7F9F0937 DBAF8AA9 250 | quit 251 | crypto pki certificate chain SLA-TrustPoint 252 | certificate ca 01 253 | 30820321 30820209 A0030201 02020101 300D0609 2A864886 F70D0101 0B050030 254 | 32310E30 0C060355 040A1305 43697363 6F312030 1E060355 04031317 43697363 255 | 6F204C69 63656E73 696E6720 526F6F74 20434130 1E170D31 33303533 30313934 256 | 3834375A 170D3338 30353330 31393438 34375A30 32310E30 0C060355 040A1305 257 | 43697363 6F312030 1E060355 04031317 43697363 6F204C69 63656E73 696E6720 258 | 526F6F74 20434130 82012230 0D06092A 864886F7 0D010101 05000382 010F0030 259 | 82010A02 82010100 A6BCBD96 131E05F7 145EA72C 2CD686E6 17222EA1 F1EFF64D 260 | CBB4C798 212AA147 C655D8D7 9471380D 8711441E 1AAF071A 9CAE6388 8A38E520 261 | 1C394D78 462EF239 C659F715 B98C0A59 5BBB5CBD 0CFEBEA3 700A8BF7 D8F256EE 262 | 4AA4E80D DB6FD1C9 60B1FD18 FFC69C96 6FA68957 A2617DE7 104FDC5F EA2956AC 263 | 7390A3EB 2B5436AD C847A2C5 DAB553EB 69A9A535 58E9F3E3 C0BD23CF 58BD7188 264 | 68E69491 20F320E7 948E71D7 AE3BCC84 F10684C7 4BC8E00F 539BA42B 42C68BB7 265 | C7479096 B4CB2D62 EA2F505D C7B062A4 6811D95B E8250FC4 5D5D5FB8 8F27D191 266 | C55F0D76 61F9A4CD 3D992327 A8BB03BD 4E6D7069 7CBADF8B DF5F4368 95135E44 267 | DFC7C6CF 04DD7FD1 02030100 01A34230 40300E06 03551D0F 0101FF04 04030201 268 | 06300F06 03551D13 0101FF04 05300301 01FF301D 0603551D 0E041604 1449DC85 269 | 4B3D31E5 1B3E6A17 606AF333 3D3B4C73 E8300D06 092A8648 86F70D01 010B0500 270 | 03820101 00507F24 D3932A66 86025D9F E838AE5C 6D4DF6B0 49631C78 240DA905 271 | 604EDCDE FF4FED2B 77FC460E CD636FDB DD44681E 3A5673AB 9093D3B1 6C9E3D8B 272 | D98987BF E40CBD9E 1AECA0C2 2189BB5C 8FA85686 CD98B646 5575B146 8DFC66A8 273 | 467A3DF4 4D565700 6ADF0F0D CF835015 3C04FF7C 21E878AC 11BA9CD2 55A9232C 274 | 7CA7B7E6 C1AF74F6 152E99B7 B1FCF9BB E973DE7F 5BDDEB86 C71E3B49 1765308B 275 | 5FB0DA06 B92AFE7F 494E8A9E 07B85737 F3A58BE1 1A48A229 C37C1E69 39F08678 276 | 80DDCD16 D6BACECA EEBC7CF9 8428787B 35202CDC 60E4616A B623CDBD 230E3AFB 277 | 418616A9 4093E049 4D10AB75 27E86F73 932E35B5 8862FDAE 0275156F 719BB2F0 278 | D697DF7F 28 279 | quit 280 | ! 281 | license udi pid CSR1000V sn 9XLGHU4IBMH 282 | license boot level ax 283 | diagnostic bootup level minimal 284 | ! 285 | spanning-tree extend system-id 286 | memory free low-watermark processor 80557 287 | ! 288 | netconf-yang 289 | ! 290 | restconf 291 | ! 292 | username developer privilege 15 secret 9 $9$fhUXi6Xg438iAE$..VhXRCHiDQy3K2zmZUl9iZLbQJ9wpUtQZwQxSRESc2 293 | username cisco privilege 15 secret 9 $9$COf3Q4xfzT.JxE$L3hvSkDv874Qrh8Hzdv/rPQjLNOjreYG2ocffHG7rls 294 | username root privilege 15 secret 9 $9$FfUDIPBFcs03AE$MyLIWEuiRle8p3yGflAGTcrJA6BUUh/oWtyyfoMQXSI 295 | username jpatterson secret 9 $9$mb98uHjTdhYCzE$6nZnLbamF75.wcdAshXOftU54GzGgaQOFs/12l9k0nM 296 | username jbutcher secret 9 $9$dkv67x8BcUUfC.$rfs2QDBgq7aiBA9SSwdwfJ.HJ040qzdMu11VOphfCVc 297 | username gbullien secret 9 $9$7di5u25gpvdkD.$Zof9GsN7yyyGkrjWm8SY.6Vu6vl6V/.gsBfsHBq/6MY 298 | username tclancy secret 9 $9$zyzussdQGTrfZE$ybUqt04gkdAfI1pLyDNjRZWED7A7EKt9Ixn93dcktmU 299 | username jrtolkien secret 9 $9$Fr6U3HGpp6yAfE$FA.s.OGKTWF4dRc356nswcJjWVNJRJIQr6iinu98K8E 300 | username gmartin secret 9 $9$6a5sG7li2N00ak$B0kAc6dHZDIsv9R2U9bHGueSXlPFle8Dn0DhLbnC0qo 301 | ! 302 | redundancy 303 | ! 304 | ! 305 | ! 306 | ! 307 | ! 308 | ! 309 | ! 310 | ! 311 | ! 312 | ! 313 | ! 314 | ! 315 | ! 316 | ! 317 | ! 318 | ! 319 | ! 320 | ! 321 | ! 322 | ! 323 | ! 324 | ! 325 | ! 326 | interface Loopback99 327 | description Developers interface 328 | ip address 192.168.233.1 255.255.255.255 329 | ! 330 | interface Loopback101 331 | description Created with Ansible 332 | ip address 192.168.1.1 255.255.255.255 333 | ! 334 | interface Loopback102 335 | description Created with Ansible 336 | ip address 192.168.1.2 255.255.255.255 337 | ! 338 | interface Loopback199 339 | description New Loopback by Priv15 user 340 | ip address 172.32.255.1 255.255.255.255 341 | ! 342 | interface Loopback1150 343 | description Pod Number 1150 344 | vrf forwarding red 345 | ip address 10.111.11.1 255.255.255.255 346 | ! 347 | interface Loopback1250 348 | description Pod Number 1250 349 | vrf forwarding blue 350 | ip address 10.111.12.1 255.255.255.255 351 | ! 352 | interface Loopback1350 353 | description Pod Number 1350 354 | vrf forwarding green 355 | ip address 10.111.13.1 255.255.255.255 356 | ! 357 | interface Loopback1450 358 | description Pod Number 1450 359 | vrf forwarding mypod 360 | ip address 10.111.14.1 255.255.255.255 361 | ! 362 | interface Loopback5050 363 | description Pod Number 5050 364 | ip address 10.111.50.1 255.255.255.255 365 | ! 366 | interface Loopback5150 367 | description Pod Number 5150 368 | ip address 10.111.51.1 255.255.255.255 369 | ! 370 | interface Loopback5250 371 | description Pod Number 5250 372 | ip address 10.111.52.1 255.255.255.255 373 | ! 374 | interface Loopback5350 375 | description Pod Number 5350 376 | ip address 10.111.53.1 255.255.255.255 377 | ! 378 | interface GigabitEthernet1 379 | description MANAGEMENT INTERFACE - DON'T TOUCH ME 380 | ip address 10.10.20.48 255.255.255.0 381 | negotiation auto 382 | no mop enabled 383 | no mop sysid 384 | ! 385 | interface GigabitEthernet2 386 | description ConfiguredNetConf 387 | no ip address 388 | shutdown 389 | negotiation auto 390 | no mop enabled 391 | no mop sysid 392 | ! 393 | interface GigabitEthernet3 394 | description Network Interface 395 | no ip address 396 | shutdown 397 | negotiation auto 398 | no mop enabled 399 | no mop sysid 400 | ! 401 | ip forward-protocol nd 402 | ip http server 403 | ip http authentication local 404 | ip http secure-server 405 | ip route 0.0.0.0 0.0.0.0 GigabitEthernet1 10.10.20.254 406 | ! 407 | ip ssh rsa keypair-name ssh-key 408 | ip ssh version 2 409 | ip scp server enable 410 | ! 411 | ! 412 | ! 413 | ! 414 | ! 415 | ! 416 | ! 417 | control-plane 418 | ! 419 | ! 420 | ! 421 | ! 422 | ! 423 | banner motd ^C 424 | Welcome to the DevNet Sandbox for CSR1000v and IOS XE 425 | 426 | The following programmability features are already enabled: 427 | - NETCONF 428 | - RESTCONF 429 | 430 | Thanks for stopping by. 431 | ^C 432 | ! 433 | line con 0 434 | exec-timeout 0 0 435 | stopbits 1 436 | line vty 0 4 437 | login local 438 | transport input ssh 439 | ! 440 | ntp server 10.111.10.66 441 | ! 442 | ! 443 | ! 444 | ! 445 | ! 446 | end 447 | 448 | csr1000v-1# 449 | --------------------------------------------------------------------------------