【问题标题】:How activate OSPF in a router Cisco-IOS-XE using RESTCONF?如何使用 RESTCONF 在路由器 Cisco-IOS-XE 中激活 OSPF?
【发布时间】:2021-02-12 09:08:16
【问题描述】:

我正在尝试使用带有 restconf 的 python 脚本在路由器中激活 OSPF 路由协议。我将请求发送到此 url https://(router ip)/restconf/data/Cisco-IOS-XE-ospf-native-router:10 但我收到此返回消息:{"errors":{"error":[{" error-message": "uri keypath not found", "error-tag": "invalid-value", "error-type": "application" } ] } }

我尝试了不同的网址,但没有一个是正确的,我不知道什么是错的,网址或正文的内容,有人可以帮助我吗?

这是我的脚本的内容:

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))

【问题讨论】:

    标签: python-requests cisco-ios ospf ietf-restconf


    【解决方案1】:

    带有 RESTCONF 的 OSPF 配置只能修改,不能创建。

    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)

    【讨论】:

      【解决方案2】:

      你的身体似乎不适用于 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
              }
            ]
          }
        ]
      }
      

      【讨论】:

        猜你喜欢
        • 2021-06-17
        • 1970-01-01
        • 2019-12-15
        • 1970-01-01
        • 2022-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多