отправлять измененные данные с помощью ncclient с маршрутизатора, как это работает? - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу получить данные с маршрутизатора, изменить их и отправить измененные данные на маршрутизатор.Вот как я это делаю.Я могу получить текущие данные с моего роутера и изменить имя устройства, например, здесь.Но когда я хочу отправить его обратно на маршрутизатор, я получаю много ошибок.

import sys
import io
import xml.etree.ElementTree as ET
from ncclient import manager

with manager.connect(host="192.168.X.X", port=2022, username="admin", password="admin", hostkey_verify=False, allow_agent=False,look_for_keys=False) as m:
    first = m.get_config('running')

root = ET.fromstring(str(first))
file = open("testfile.txt","w") 
file.write(str(first))
for data in root.findall("{urn:ietf:params:xml:ns:x:base:1.0}data"):
    for devices in data.findall("{http://tail-f.com/ns/x}devices"):
        for device in devices.findall("{http://tail-f.com/ns/x}device"):
            for name in device.findall("{http://tail-f.com/ns/x}name"):
                new_name= "NameDevice"
                name.text = (str(new_name))
                final = data
with manager.connect(host="192.168.x.x", port=2022, username="admin", password="admin", hostkey_verify=False, allow_agent=False,look_for_keys=False) as m:
    c = m.get_config(source='running').data_xml
    m.edit_config(target='running', config=str(final)) 

Когда я ставлю эту строку (окончательную), я получаю взамен:

XMLSyntaxError: error parsing attribute name, line 1, column 10

НоЯ пробовал много разных вещей, я даже пытаюсь отправить ему переменную c, которая, как мне кажется, обычно совпадает с моей первой.Но я тоже получил ошибку вроде:

XMLError: Element [{urn:ietf:params:xml:ns:x:base:1.0}data] does not meet requirement

Я думаю, я не понимаю, как это работает, и я хотел бы, чтобы кто-то объяснил мне это.Спасибо.

...