Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Universidad Politécnica Salesiana: Módulo 1 Video 1 Data Formats: Understanding and Using JSON, XML and YAML
Universidad Politécnica Salesiana: Módulo 1 Video 1 Data Formats: Understanding and Using JSON, XML and YAML
Módulo 1
VIDEO 1
Data Formats: Understanding and
using JSON, XML and YAML
netprog_basics/programming_fundamentals/data_formatsdirectorio
JSON
XML
YAML
Demystify XML
cat address_list.xml
cat GigabitEthernet2.xml
Breakdown JSON
JSON - JavaScript Object Notation
cat address_list.json
cat GigabitEthernet2.json
Simplify YAML
YAML - “YAML Ain’t Markup Language”
cat address_list.yaml
cat GigabitEthernet2.yaml
VIDEO 2
APIs are Everywhere... but what are
they?
VIDEO3
REST APIs Part 1: HTTP is for more
than Web Browsing
Esta lección no tiene requisitos de:
configuración.netprog_basics/programming_fundamentals/rest_part_1directorio
What is REST?
curl https://api.icndb.com/jokes/random
curl https://api.icndb.com/jokes/random?limitTo=nerdy
netprog_basics/programming_fundamentals/rest_part_2directorio.
https://{{apic}}/api/v1/ticket
body:
{
"username": "{{username}}",
"password": "{{password}}"
}
Test:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("token",jsonData.response.serviceTicket);
VIDEO 5
Python Part 1: Python Language
and Script Basics
netprog_basics/programming_fundamentals/python_part_1directorio.
EXAMPLE 1
cat example1.py
python2.7 example1.py 56
EXAMPLE 2
cat example2.py
python3.5 example2.py
cat example2.log
EXAMPLE 3
cat example3.py
python3.5 example3.py
VIDEO 6
Python Part 2: Working with
Libraries and Virtual Environments
netprog_basics/programming_fundamentals/python_part_2directorio.
Instalar un paquete
pip install package
Upgrade un paquete
pip install --upgrade package
Desinstalar un paquete
pip uninstall package
Instalar requeriments.txt
pip install -r requeriments.txt
source venv/bin/activate
cd netprog_basics/programming_fundamentals/python_part_2
python3.5
>>> pprint(books)
>>> sys.argv[1]
>>> sys.argv[2]
Error Occurred
Interactuar con archivos, rutas y entornos con os
open(filename)
os.environ [var_name]
python3.5
>>> import os
>>> os.getcwd()
>>> os.chdir("../")
>>> os.getcwd()
>>> os.environ["USER"]
>>> os.environ["VAR_FROM_PYTHON"]
>>> right_now.strftime(date_display_format)
>>> four_weeks_from_now.strftime(date_display_format)
pyjokes
pyjoke
VIDEO 7
Python Part 3: Useful Python
Libraries for Network Engineers
netprog_basics/programming_fundamentals/python_part_3directorio.
cd netprog_basics/programming_fundamentals/python_part_3
python
import xmltodict
xml_example = open("xml_example.xml").read()
pprint(xml_example)
xml_dict = xmltodict.parse(xml_example)
int_name = xml_dict["interface"]["name"]
int_name
xmltodict.unparse(xml_dict).
To JSON and back again with json
python
import json
json_example = open("json_example.json").read()
pprint(json_example)
json_python = json.loads(json_example)
int_name = json_python["ietf-interfaces:interface"]["name"]
int_name
json.dumps(json_python)
YAML? Yep, Python Can Do That Too!
python
import yaml
yml_example = open("yaml_example.yaml").read()
pprint(yml_example)
yaml_python = yaml.load(yml_example)
int_name = yaml_python["ietf-interfaces:interface"]["name"]
int_name
yaml.dump(yaml_python)
import csv
import pprint
csv_example = open("csv_example.csv").read()
csv_example
csv_example = open("csv_example.csv")
csv_python = csv.reader(csv_example)
for row in csv_python:
"port": "443",
"user": "developer",
"pass": "C1sco12345"}
u = "https://{}:{}/restconf/data/interfaces/interface=GigabitEthernet1"
u = u.format(router["ip"], router["port"])
print(u)
r = requests.get(u,
headers = headers,
auth=(router["user"], router["pass"]),
verify=False)
"port": 830,
"user": "developer",
"pass": "C1sco12345"}
netconf_filter = """
<filter>
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
<interface>
<name>GigabitEthernet1</name>
</interface>
</interfaces>
</filter>
"""
m = manager.connect(host=router["ip"],
port=router["port"],
username=router["user"],
password=router["pass"],
hostkey_verify=False)
interface_python = xmltodict.parse(interface_netconf.xml)["rpc-reply"]["data"]
pprint(interface_python["interfaces"]["interface"]["name"]["#text"])
Para cuando CLI es la única opción - netmiko
● Si no hay otra API disponible ...
● Se basa en la biblioteca paramiko para Conectividad SSH
● Soporte para una variedad de sistemas operativos y dispositivos de red
de proveedores
● Enviar y recibir texto claro
● El posprocesamiento de datos será clave
"host": "10.10.20.48",
"user": "developer",
"pass": "C1sco12345"}
net_connect = ConnectHandler(ip=router["host"],
username=router["user"],
password=router["pass"],
device_type=router["device_type"])
pprint(interface_cli)
MÓDULO 3
VIDEO 1
Getting the “YANG” of it with
Standard Data Models
netprog_basics/network_device_apis/yangdirectorio.
cd netprog_basics/network_device_apis/yang
whereis pyang
siguientes comandos:
cd netprog_basics/network_device_apis/netconf
cat device_info.py
cat example1.py
python example1.py
cat example2.py
python example2.py
cat example3.py
python -i example3.py
VIDEO 3
Learn to CRUD with GET, POST
and DELETE using RESTCONF
Todo el código y los ejemplos de esta lección se encuentran en el:
siguientes comandos:
cd netprog_basics/network_device_apis/restconf
https://{{host}}:{{port}}/restconf/data/netconf-state/capabilities
https://{{host}}:{{port}}/restconf/data/ietf-interfaces:interfaces/interface=GigabitEthernet2
VIDEO 4-5
NX-API Part 1: Get Started with the
Native Nexus API
Todo el código y los ejemplos de esta lección se encuentran en el:
netprog_basics/network_device_apis/nxapidirectorio.
cd netprog_basics/network_device_apis/nxapi