Skip to content

Commit 485d10b

Browse files
author
Jason Frazier
committed
Added RESTCONF
1 parent 33d7482 commit 485d10b

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed

RC-get-config/RC-get-config.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/usr/bin/env python
2+
#
3+
# Copyright (c) 2017 Jason Frazier <jafrazie@cisco.com>
4+
# All rights reserved.
5+
#
6+
# Redistribution and use in source and binary forms, with or without
7+
# modification, are permitted provided that the following conditions
8+
# are met:
9+
# 1. Redistributions of source code must retain the above copyright
10+
# notice, this list of conditions and the following disclaimer.
11+
# 2. Redistributions in binary form must reproduce the above copyright
12+
# notice, this list of conditions and the following disclaimer in the
13+
# documentation and/or other materials provided with the distribution.
14+
#
15+
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16+
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18+
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21+
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22+
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23+
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24+
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25+
# SUCH DAMAGE.
26+
#
27+
# This script retrieves entire configuration from a network element via NETCONF
28+
# prints it out in a "pretty" XML tree.
29+
30+
from argparse import ArgumentParser
31+
from ncclient import manager
32+
import requests
33+
34+
if __name__ == '__main__':
35+
36+
parser = ArgumentParser(description='Select options.')
37+
38+
# Input parameters
39+
parser.add_argument('-host', '--host', type=str, required=True,
40+
help="The device IP or DN")
41+
parser.add_argument('-user', '--username', type=str, default='cisco',
42+
help="User credentials for the request")
43+
parser.add_argument('-passwd', '--password', type=str, default='cisco',
44+
help="It's the password")
45+
parser.add_argument('-port', '--port', type=int, default=830,
46+
help="Specify this if you want a non-default port")
47+
48+
args = parser.parse_args()
49+
50+
username = args.username
51+
password = args.password
52+
host = args.host
53+
port = str(args.port)
54+
55+
url = "http://" + host + ":" + port + "/restconf/api/running/"
56+
57+
headers = {
58+
"Content-Type": "application/vnd.yang.datastore+json",
59+
"Accept": "application/vnd.yang.datastore+json",
60+
}
61+
response = requests.request("GET", url, headers=headers, auth=(username,password))
62+
63+
print(response.text)

RC-get-config/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# RESTCONF get-config
2+
3+
This is an example Python script that literally just grabs the entiere config of a network element.
4+
5+
It's not just what you would see from the CLI exec command "show running-config".
6+
You'll get everything. From all known open-models, and the native-model (which is the translation of the running config a human is used to).
7+
8+
# requirements
9+
-- IOS-XE running >/= 16.3.1 also enabled for RESTCONF
10+
11+
# running
12+
-- Can run on-box or off-box.

0 commit comments

Comments
 (0)