Как активировать OSPF в маршрутизаторе Cisco-IOS-XE с помощью RESTCONF?

Я пытаюсь активировать протокол маршрутизации OSPF на маршрутизаторе, используя скрипт python с restconf. Я отправляю запрос на этот URL-адрес https://(router ip)/restconf/data/Cisco-IOS-XE-ospf -native-router:10, но я получаю это возвращаемое сообщение: { "ошибки": { "ошибка": [ { "сообщение об ошибке": "путь к uri не найден", "тег ошибки": "недопустимое значение", "тип ошибки": "приложение" } ] } }

Я пробовал с разными URL-адресами, но никто не был правильным, и я не знаю, что не так, URL-адрес или содержимое тела, может ли кто-нибудь мне помочь?

Это содержимое моего скрипта:

import json
import requests

requests.packages.urllib3.disable_warnings()

api_url = "https://(ip)/restconf/data/Cisco-IOS-XE-ospf-native-router:10"
headers = {"Accept": "application/yang-data+json",
           "Content-type": "application/yang-data+json"}
basicauth = ("user", "password")

body = '{"router":{"ospf":[{"id":10, "router-id":"1.1.1.1", "network":[{"ip": "172.16.199.1", "mask": "0.0.0.0", "area": 0},{"ip":"192.168.56.101", "mask": "0.0.0.0", "area":0}]}]}}'

requests.put(api_url, auth=basicauth, headers=headers, data=body, verify=False)

resp = requests.get(api_url, auth=basicauth, headers=headers, verify=False)

response_json = resp.json()

print(json.dumps(response_json, indent=5))

person lost on internet    schedule 24.05.2020    source источник


Ответы (2)


Конфигурацию OSPF с RESTCONF можно просто изменить, а не создать.

ospf_data = '''
{
    "Cisco-IOS-XE-native:router": {
        "Cisco-IOS-XE-ospf:router-ospf": {
            "ospf": {
                "process-id": [
                    {
                        "id": 10
                    }
                ]
            }
        }
    }
}
'''

def modify_ospf(data):
    ospf_api = "/restconf/data/Cisco-IOS-XE-native:native/router"
    ospf_uri = "https://" + host + ospf_api
    headers = {'Content-Type': 'application/yang-data+json','Accept': 'application/yang-data+json'}

    ospf_config_result = requests.request("PUT",
                                         url=ospf_uri, 
                                         auth=(username,password), 
                                         data=data, 
                                         headers=headers, 
                                         verify=False)
    
modify_ospf(ospf_data)

person Jackal.C    schedule 08.02.2021

Похоже, ваше тело не поддерживает формат YANG.

body = '{"router":{"ospf":[{"id":10, "router-id":"1.1.1.1", "network":[{"ip": "172.16.199.1", "mask": "0.0.0.0", "area": 0},{"ip":"192.168.56.101", "mask": "0.0.0.0", "area":0}]}]}}'

Вы должны следовать формату YANG, например:

$ curl -k -s -u user:password -X GET -H 'Accept: application/yang-data+json' https://172.31.5.1/restconf/data/Cisco-IOS-XE-native:native/Cisco-IOS-XE-native:router/ospf

{
  "Cisco-IOS-XE-ospf:ospf": [
    {
      "id": 10,
      "router-id": "1.1.1.1",
      "network": [
        {
          "ip": "172.16.199.1",
          "mask": "0.0.0.0",
          "area": 0
        },
        {
          "ip": "192.168.56.101",
          "mask": "0.0.0.0",
          "area": 0
        }
      ]
    }
  ]
}
person Eiji Tanioka    schedule 12.02.2021