Мой скрипт Python завершает мой сеанс netconf перед возвратом моего запроса XML rpc. Я перехожу к нему. Мой XML rpc работает, когда я подключаюсь непосредственно к сеансу Netconf моего маршрутизатора. Может кто-нибудь, пожалуйста, помогите мне понять это? Я не хочу использовать библиотеку NCCLIENT, я бы скорее открыл сокет для API Netconf напрямую.Соединение Netconf, завершающееся скриптом Python
Router = 5.3.4 XRV Python = 2,7
Python код:
import paramiko
import socket
import time
import sys
ROUTER_IP = 'x.x.x.x'
USERNAME = 'adrian'
PASSWORD = 'xxxxxx'
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(
paramiko.AutoAddPolicy())
Send_XML = """
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="106" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-config>
<source>
<running/>
</source>
<filter>
<Configuration>
<InterfaceConfigurationTable/>
</Configuration>
</filter>
</get-config>
</rpc>
]]>]]>"""
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.connect((ROUTER_IP, 830))
trans = paramiko.Transport(socket)
trans.connect(username=USERNAME, password=PASSWORD)
# CREATE CHANNEL FOR DATA COMM
ch = trans.open_session()
name = ch.set_name('netconf')
# Invoke NETCONF
ch.invoke_subsystem('netconf echo format')
# SEND COMMAND
ch.send(Send_XML)
# Recieve data returned
data = ch.recv(2048)
while data:
data = ch.recv(1024)
print data,
if data.find('</rpc-reply>') == 0:
# We have reached the end of reply
print "END!!"
break
ch.close()
trans.close()
socket.close()
Выход
C:\Python27\python.exe "C:/Users/adrian/OneDrive/Python/DevNet/XR NCClient.py"
g/Cisco-IOS-XR-ha-eem-cfg?module=Cisco-IOS-XR-ha-eem-cfg&revision=2013-07-22</capability>
<capability>http://cisco.com/ns/yang/Cisco-IOS-XR-ha-eem-oper?
.
.
.
<capability>urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15</capability>
</capabilities>
<session-id>21415</session-id>
</hello>
]]>]]>
Process finished with exit code 0
Direct Connect
SSH х.х.х.х -p 830 NETCONF эхо формат
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="106" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-config>
<source>
<running/>
</source>
<filter>
<Configuration>
<InterfaceConfigurationTable/>
</Configuration>
</filter>
</get-config>
</rpc>
]]>]]>
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="106" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data>
<Configuration>
<InterfaceConfigurationTable MajorVersion="5" MinorVersion="4">
<InterfaceConfiguration>
<Naming>
.
.
.
</InterfaceConfigurationTable>
</Configuration>
</data>
</rpc-reply>
]]>]]>