Skip to content

Commit 9f2ea53

Browse files
authored
Update RC-get-config.py
use RESTCONF URL for running config take password from environment variable or prompt for it catch exceptions if URL request fails
1 parent fadf9a6 commit 9f2ea53

File tree

1 file changed

+25
-10
lines changed

1 file changed

+25
-10
lines changed

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

+25-10
Original file line numberDiff line numberDiff line change
@@ -24,39 +24,54 @@
2424
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2525
# SUCH DAMAGE.
2626
#
27-
# This script retrieves entire configuration from a network element via NETCONF
28-
# prints it out in a "pretty" XML tree.
27+
# This script retrieves entire configuration from a network element via RESTCONF
28+
# and prints it out in a "pretty" JSON tree.
2929

3030
from argparse import ArgumentParser
3131
import requests
32+
import urllib3
33+
import json
34+
import sys
35+
import os
36+
from getpass import getpass
37+
from pprint import pprint
3238

3339
if __name__ == '__main__':
3440

41+
# Disable SSL Warnings
42+
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
43+
3544
parser = ArgumentParser(description='Select options.')
3645

3746
# Input parameters
3847
parser.add_argument('-host', '--host', type=str, required=True,
3948
help="The device IP or DN")
4049
parser.add_argument('-user', '--username', type=str, default='cisco',
4150
help="User credentials for the request")
42-
parser.add_argument('-passwd', '--password', type=str, default='cisco',
43-
help="It's the password")
4451
parser.add_argument('-port', '--port', type=int, default=443,
4552
help="Specify this if you want a non-default port")
4653

4754
args = parser.parse_args()
4855

4956
username = args.username
50-
password = args.password
57+
password = os.getenv('DEVNET_RESTCONF_PASSWORD')
58+
if password is None:
59+
password = getpass()
5160
host = args.host
5261
port = str(args.port)
5362

54-
url = "https://" + host + ":" + port + "/restconf/api/running/"
63+
url = "https://" + host + ":" + port + "/restconf/data/Cisco-IOS-XE-native:native"
5564

5665
headers = {
57-
"Content-Type": "application/vnd.yang.datastore+json",
58-
"Accept": "application/vnd.yang.datastore+json",
66+
"Content-Type": "application/yang-data+json",
67+
"Accept": "application/yang-data+json",
5968
}
60-
response = requests.request("GET", url, headers=headers, auth=(username,password), verify=False)
69+
70+
try:
71+
response = requests.request("GET", url, headers=headers, auth=(username,password), verify=False)
72+
response.raise_for_status()
73+
except Exception as e:
74+
print(e, file=sys.stderr)
75+
sys.exit(1)
6176

62-
print(response.text)
77+
pprint(response.json())

0 commit comments

Comments
 (0)