Az alábbi program lekézdezi az összes GigabitEthernet típusú interfész adatait.
import requests
import json
requests.packages.urllib3.disable_warnings()
ip = "192.168.86.135"
url = f"https://{ip}:443/restconf/data/Cisco-IOS-XE-native:native/interface/GigabitEthernet"
headers = {
"Accept": "application/yang-data+json",
"Content-Type": "application/yang-data+json"
}
response = requests.get(
url=url,
headers=headers,
auth=("test","test"), # test:test -> BASE64
verify=False
)
print(json.dumps(response.json(), indent=2))
Egy kis módosítással indexelhetjük is a GigabitEthernet
listát, így csak egy adott interfész adatait kapjuk meg:
url = f"https://{ip}:443/restconf/data/Cisco-IOS-XE-native:native/interface/GigabitEthernet=2"
Ez az URL például a GigabitEthernet2
interfészt választja ki.
Ez a program a GigabitEthernet2
interfész IP címét módosítja.
import requests
import json
requests.packages.urllib3.disable_warnings()
ip = "192.168.86.131"
url = f"https://{ip}:443/restconf/data/Cisco-IOS-XE-native:native/interface/GigabitEthernet=2/ip/address/primary"
headers = {
"Accept": "application/yang-data+json",
"Content-Type": "application/yang-data+json"
}
body = {
"primary": {
"address": "2.2.2.2",
"mask": "255.255.255.0"
}
}
response = requests.put(
url=url,
headers=headers,
data=json.dumps(body),
auth=("test","test"),
verify=False
)
print(response)
Ez a program több interfészt is létrehoz. Fontos a létrehoz ige kiemelése, mivel itt új HTTP erőforrások jönnek létre, így a POST
művelet passzol.
import requests
import json
requests.packages.urllib3.disable_warnings()
ip = "192.168.86.131"
url = f"https://{ip}:443/restconf/data/Cisco-IOS-XE-native:native/interface"
headers = {
"Accept": "application/yang-data+json",
"Content-Type": "application/yang-data+json"
}
body = {
"Loopback": [
{
"name": "6666",
"ip": {
"address": {
"primary": {
"address": "6.6.6.6",
"mask": "255.255.255.255"
}
}
}
},
{
"name": "4444",
"ip": {
"address": {
"primary": {
"address": "4.4.4.4",
"mask": "255.255.255.255"
}
}
}
},
]
}
response = requests.post(
url=url,
headers=headers,
data=json.dumps(body),
auth=("test","test"),
verify=False
)
print(response)
Az alábbi példában egy új OSPF folyamatot indítunk, és rendelünk is hozzá hálózatokat. Ez a példa azért fontos, mert az URL bejárásakor egy modulváltást figyelhetünk meg. Bár a Cisco-IOS-XE-native
modulban sok információt érünk el, vannak olyan területek, amik külön modulokat kaptak. Ilyen az összes forgalomirányítási protokoll is, amelyek önálló modulok. Ha viszont rájuk keresünk, azt tapasztaljuk, hogy nincsen saját gyökér elérési útjuk, hanem az eddig is használt native
modult egészítik ki. (augment)
import requests
import json
requests.packages.urllib3.disable_warnings()
ip = "192.168.86.131"
url = f"https://{ip}:443/restconf/data/Cisco-IOS-XE-native:native/router/Cisco-IOS-XE-ospf:router-ospf/ospf"
headers = {
"Accept": "application/yang-data+json",
"Content-Type": "application/yang-data+json"
}
body = {
"process-id": {
"id": "20",
"network": [
{
"ip": "10.0.0.0",
"wildcard": "0.0.0.255",
"area": "0"
},
{
"ip": "6.6.6.6",
"wildcard": "0.0.0.0",
"area": "0"
},
{
"ip": "8.8.8.8",
"wildcard": "0.0.0.0",
"area": "0"
},
]
}
}
response = requests.post(
url=url,
headers=headers,
data=json.dumps(body),
auth=("test","test"),
verify=False
)
print(response)