Giter Club home page Giter Club logo

pyiosxr's Introduction

pyiosxr's People

Contributors

9er avatar dbarrosop avatar fooelisa avatar ichabond avatar jejenone avatar mirceaulinic avatar ogenstad avatar thorko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pyiosxr's Issues

More than one session for same router throws exceptions

The open() method calls _enter_xml_mode which calls lock.
When I try to open two instances of connection for the same router (network testing), it throws exception as below:

Traceback (most recent call last):
File "/auto/cafy_dev/cafykit/lib/python3.4/site-packages/pyIOSXR/iosxr.py", line 472, in lock
self._execute_rpc(rpc_command)
File "/auto/cafy_dev/cafykit/lib/python3.4/site-packages/pyIOSXR/iosxr.py", line 412, in _execute_rpc
raise XMLCLIError(error_msg, self)
pyIOSXR.exceptions.XMLCLIError:
Original call was:

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "", line 1, in
File "/auto/cafy_dev/cafykit/lib/python3.4/site-packages/napalm_iosxr/iosxr.py", line 70, in open
self.device.open()
File "/auto/cafy_dev/cafykit/lib/python3.4/site-packages/pyIOSXR/iosxr.py", line 171, in open
self._enter_xml_mode()
File "/auto/cafy_dev/cafykit/lib/python3.4/site-packages/pyIOSXR/iosxr.py", line 234, in _enter_xml_mode
self.lock()
File "/auto/cafy_dev/cafykit/lib/python3.4/site-packages/pyIOSXR/iosxr.py", line 474, in lock
raise LockError('Unable to enter in configure exclusive mode!', self)
pyIOSXR.exceptions.LockError: Unable to enter in configure exclusive mode!

Possible solutions:

  • open sessions and handle lock as optional parameter. When user tries to create one more session with config true - then throw exception
  • isolate connection handling vs XML as add on option - this way the library to support other modes like netconf yang/grpc, telnet and others

IOS-XR has a 60 character limit for commit comments

IOS-XR has a 60 character limit for commit comments, as can be seen on the CLI:
(config)#commit comment ? LINE Comment for this commit (Max 60 characters)

Currently there is no character length check on the commit_config, which could lead to failures.

xml requests

Hi!

Is there any reason why xml requests are hand crafted as text instead of using ElementTree to craft them?

f.eks when commiting data:

In [20]: tostring(SubElement(Element('Request'), "Commit", Replace="False", Label="", Comment="", Confirmed=""))

Out[20]: <Commit Replace="true" Label=""' Comment="" Confirmed=""/>`

all paramters could also be added via a dict instead of kwargs. this work great on short xml statements, but is more "texty" when multiple commands needs to be passed:

root = Element('Request')
root.append(Element('Unlock'))
rollback = SubElement(root, "Rollback")
prev = SubElement(rollback, "Previous")
prev.text = "1"
root.append(Element('Lock'))
''.join(map(tostring, root.getchildren()))
Out[62]: '<Lock /><Rollback><Previous>1</Previous></Rollback><unLock />'

iv'e ignored the root object becouse thats added elsewhere in the code.

is this something that have been discussed ?

Gracefully handle errors better if xml command fails

The below would just come back as a generic Netmiko error intead of raising the underlying error that happened from the xml command.

Would be better if the xml command that resulted in an ERROR raised the underlying error message.

RP/0/RP0/CPU0:ios-xr#
RP/0/RP0/CPU0:ios-xr#terminal length 0
Fri Oct 12 19:56:36.548 UTC
RP/0/RP0/CPU0:ios-xr#terminal width 511
Fri Oct 12 19:56:36.774 UTC
RP/0/RP0/CPU0:ios-xr#
RP/0/RP0/CPU0:ios-xr#xml
Fri Oct 12 19:56:37.485 UTC
ERROR: 0xa3679c00 'XML Service Library' detected the 'fatal' condition 'The router is low on memory. Please retry the request after memory consumption has gone down.'
RP/0/RP0/CPU0:ios-xr#<?
                     ^
% Invalid input detected at '^' marker.
RP/0/RP0/CPU0:ios-xr#<xml version="1.0" encoding="UTF-8"?
                     ^
% Invalid input detected at '^' marker.
RP/0/RP0/CPU0:ios-xr#<xml version="1.0" encoding="UTF-8"><Request MajorVersion="1" MinorVersion="0"><Get><Operational><SystemTime/><PlatformInventory/>        </Operational></Get></Request>

pyIOSXR

Hi!

I'm been working on a program where I want to push configuration to Cisco IOS XR devices and I run into problems when trying to use the code below.

This is my current code snippets:

device = IOSXR(hostname=router["ip"], username=router["username"], password=["password", port=router["port"], timeout=120)

device.open()
device.load_candidate_config(filename=router["path"])`
device.compare_replace_config()
device.commit_replace_config(label='test')
device.close()

I've made sure that the device xml agent is configured with 'iteration off' and I've tried different combinations of locking and unlocking the configuration, and wrapping it in 'try' statements to figure out where the problem lies.

The device just wont accept the load_candidate, compare_replace and commit_replace command.

Have I missed something obvious with the pyIOSXR library?

Best regards,
Anne Golinski

License missing

Hi, Im trying to add it my company repository but I am getting the following error

[96mRejectReasons�[0m (1)
�[96mType:�[0m UNKNOWN_LICENSE_FOUND
�[96mLicense:�[0m UNKNOWN

Can you add one?

pyIOSXR does not build with PIP 10

With pip 10 "from pip.req import parse_requirements" fails. One simple fix is:

--- setup.py.old	2017-07-25 09:29:05.000000000 -0400
+++ setup.py	2018-04-15 19:09:32.000000000 -0400
@@ -18,15 +18,9 @@
# the License.

from setuptools import setup, find_packages
-from pip.req import parse_requirements
import uuid

-# parse_requirements() returns generator of pip.req.InstallRequirement objects
-install_reqs = parse_requirements('requirements.txt', session=uuid.uuid1())
-
-# reqs is a list of requirement
-# e.g. ['django==1.5.1', 'mezzanine==1.4.6']
-reqs = [str(ir.req) for ir in install_reqs]
+reqs = [ "netmiko>=1.4.1","lxml>=3.2.4" ]

version = '0.52'

ResultSummary node does not exist in the RPC Response XML tree

Hello,

I have noticed that there is a issue when trying to make a simple RPC call to a IOS-XR device (version 5.3.1):

device.make_rpc_call('')
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python2.7/dist-packages/pyIOSXR/iosxr.py", line 119, in make_rpc_call
result = execute_rpc(self.device, rpc_command, self.timeout)
File "/usr/local/lib/python2.7/dist-packages/pyIOSXR/iosxr.py", line 42, in execute_rpc
if int(root.find('ResultSummary').get('ErrorCount')) > 0:
AttributeError: 'NoneType' object has no attribute 'get'

The problem is that in the XML Response tree (on IOS-XR 5.3.1 at least), the node ResultSummary does not exist thus the second get fails since the first get returns None object.

TimeoutError: pexpect timeout error

Hello,

I am using pyIOSXR via napalm to gather facts from an ASR9K and on most of the 9K's, I get the following error:TimeoutError: pexpect timeout error.

The tracebacks point to pyIOSXR timing out while attempting to retrieve data from the device. I have tweaked the timeout values to as high as 6 minutes (360 sec) and the error persists. Can you throw some light on what else can be done to avoid the pexpect timeouts? Or are you able to provide some kind of a workaround to this issue?

Add Support for Key-Based Authentication

Currently, open() times out if SSH is logging in using a private key.

It's probably waiting for the password prompt here:

index = device.expect(['\(yes\/no\)\?', 'password:', pexpect.EOF], timeout = self.timeout)

Password protected private keys might still be an issue, but can be avoided by using ssh-agent, like one would do with ansible.

Add support for JSON-RPC

Hello, my name is Moni Sallam, and I am on a new team at Cisco, whose sole purpose is to contribute to open source projects. pyiosxr and NAPALM are two repos that have caught our interest.

Cisco is moving towards using json-rpc as a first class interface for our products. I would like to add support for JSON-RPC into pyiosxr, and would like to get your feedback.

JSON-RPC is a simpler protocol than XML-RPC, and provides a structured return output, as opposed to CLI based screen scraping.

Here is some material if you would like to explore this further...

Support for running "clear" commands

Hi
For a project we are working on we need to execute a "clear" command to clear the qos counters on device interfaces.
This command is not supported by the xml agent.
Is there a way to exit the xml mode temporarily to run that command and return to it after?
This is mainly to avoid having to open a new ssh connection just to achieve that one clear qos counter operation.
Many thanks.

Unable to issue operational (non-show) commands via 'cli' function

The 'cli' function is a wrapper for the XML API 'cli' function. The limitation of this is documented by Cisco:

"CLI Command Limitations
The CLI commands, which are supported through XML, are limited to CLI configuration commands and EXEC mode show commands (and responses) that are wrapped in tags.

This prevents us for example from clearing interface or protocol statistics, or issuing "mpls traffic-eng" requests.

It would be very useful to have a 'raw cli' function which exits the XML interface to issue non-show commands. I understand that some of those commands might result in further interactive CLI prompts which could be awkward to catch (and suspect this is why Cisco devs have imposed the limitation in the XML API !), so the new function could be provided with this caveat...

ReadTimeout with open()

I am getting following read timeout exception when I run my script

Processing Host: usgrx107-bbisp-gw1
Traceback (most recent call last):
File "/Users/nileshkhambal/Documents/GIT_REPO/PIE/edge-bgp-peer-verification/all-route-verification/bgp_group_peer_verification_iosxr_native.py", line 164, in
cDev.open()
File "/Users/nileshkhambal/Documents/GIT_REPO/PIE/edge-bgp-peer-verification/all-route-verification/venv/lib/python3.9/site-packages/pyIOSXR/iosxr.py", line 176, in open
self._enter_xml_mode()
File "/Users/nileshkhambal/Documents/GIT_REPO/PIE/edge-bgp-peer-verification/all-route-verification/venv/lib/python3.9/site-packages/pyIOSXR/iosxr.py", line 239, in _enter_xml_mode
self.lock()
File "/Users/nileshkhambal/Documents/GIT_REPO/PIE/edge-bgp-peer-verification/all-route-verification/venv/lib/python3.9/site-packages/pyIOSXR/iosxr.py", line 477, in lock
self._execute_rpc(rpc_command)
File "/Users/nileshkhambal/Documents/GIT_REPO/PIE/edge-bgp-peer-verification/all-route-verification/venv/lib/python3.9/site-packages/pyIOSXR/iosxr.py", line 366, in _execute_rpc
response = self._send_command(xml_rpc_command, delay_factor=delay_factor)
File "/Users/nileshkhambal/Documents/GIT_REPO/PIE/edge-bgp-peer-verification/all-route-verification/venv/lib/python3.9/site-packages/pyIOSXR/iosxr.py", line 271, in _send_command
last_read = self.device.send_command_expect(command,
File "/Users/nileshkhambal/Documents/GIT_REPO/PIE/edge-bgp-peer-verification/all-route-verification/venv/lib/python3.9/site-packages/netmiko/base_connection.py", line 1820, in send_command_expect
return self.send_command(*args, **kwargs)
File "/Users/nileshkhambal/Documents/GIT_REPO/PIE/edge-bgp-peer-verification/all-route-verification/venv/lib/python3.9/site-packages/netmiko/utilities.py", line 592, in wrapper_decorator
return func(self, *args, **kwargs)
File "/Users/nileshkhambal/Documents/GIT_REPO/PIE/edge-bgp-peer-verification/all-route-verification/venv/lib/python3.9/site-packages/netmiko/base_connection.py", line 1740, in send_command
new_data = self.command_echo_read(cmd=cmd, read_timeout=10)
File "/Users/nileshkhambal/Documents/GIT_REPO/PIE/edge-bgp-peer-verification/all-route-verification/venv/lib/python3.9/site-packages/netmiko/base_connection.py", line 1452, in command_echo_read
new_data = self.read_until_pattern(
File "/Users/nileshkhambal/Documents/GIT_REPO/PIE/edge-bgp-peer-verification/all-route-verification/venv/lib/python3.9/site-packages/netmiko/base_connection.py", line 721, in read_until_pattern
raise ReadTimeout(msg)
netmiko.exceptions.ReadTimeout:

Pattern not detected: '<\?xml\ version="1\.0"\ encoding="UTF\-8"\?><Request\ MajorVersion="1"\ MinorVersion="0">' in output.

Things you might try to fix this:

  1. Adjust the regex pattern to better identify the terminating string. Note, in
    many situations the pattern is automatically based on the network device's prompt.
  2. Increase the read_timeout to a larger value.

You can also look at the Netmiko session_log or debug log for more information.

Script is pretty simple

devLogFile = str(aHost) + "_session.log"
file = open(devLogFile, "w+")
cDev = IOSXR(hostname=aHost, username=uName, password=uPassWd, port=22, timeout=300, logfile=file)
cDev.open()
cDev.unlock()
cDev.show_bgp_summary()
cDev.close()

here is the netmiko session log

DEBUG:paramiko.transport:starting thread (client mode): 0x3036e7c0
DEBUG:paramiko.transport:Local version/idstring: SSH-2.0-paramiko_3.1.0
DEBUG:paramiko.transport:Remote version/idstring: SSH-2.0-OpenSSH_8.0 PKIX[12.1 FIPS]
INFO:paramiko.transport:Connected (version 2.0, client OpenSSH_8.0)
DEBUG:paramiko.transport:=== Key exchange possibilities ===
DEBUG:paramiko.transport:kex algos: ecdh-sha2-nistp521, ecdh-sha2-nistp384, ecdh-sha2-nistp256, diffie-hellman-group14-sha1, diffie-hellman-group14-sha256, diffie-hellman-group16-sha512
DEBUG:paramiko.transport:server key: ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, rsa-sha2-256, rsa-sha2-512
DEBUG:paramiko.transport:client encrypt: aes128-ctr, aes192-ctr, aes256-ctr, [email protected], [email protected]
DEBUG:paramiko.transport:server encrypt: aes128-ctr, aes192-ctr, aes256-ctr, [email protected], [email protected]
DEBUG:paramiko.transport:client mac: hmac-sha2-512, hmac-sha2-256, hmac-sha1
DEBUG:paramiko.transport:server mac: hmac-sha2-512, hmac-sha2-256, hmac-sha1
DEBUG:paramiko.transport:client compress: none, [email protected]
DEBUG:paramiko.transport:server compress: none, [email protected]
DEBUG:paramiko.transport:client lang: <none>
DEBUG:paramiko.transport:server lang: <none>
DEBUG:paramiko.transport:kex follows: False
DEBUG:paramiko.transport:=== Key exchange agreements ===
DEBUG:paramiko.transport:Kex: ecdh-sha2-nistp256
DEBUG:paramiko.transport:HostKey: ecdsa-sha2-nistp256
DEBUG:paramiko.transport:Cipher: aes128-ctr
DEBUG:paramiko.transport:MAC: hmac-sha2-256
DEBUG:paramiko.transport:Compression: none
DEBUG:paramiko.transport:=== End of kex handshake ===
DEBUG:paramiko.transport:kex engine KexNistp256 specified hash_algo <built-in function openssl_sha256>
DEBUG:paramiko.transport:Switch to new keys ...
DEBUG:paramiko.transport:Adding ecdsa-sha2-nistp256 host key for usgrx107-bbisp-gw1: b'f0faa56c14fd92601ccec0850fd61707'
DEBUG:paramiko.transport:Got EXT_INFO: {'[email protected]': b'x509v3-ecdsa-sha2-nistp256,x509v3-ecdsa-sha2-nistp384,x509v3-ecdsa-sha2-nistp521,x509v3-ssh-rsa,ssh-rsa', 'server-sig-algs': b'x509v3-ecdsa-sha2-nistp256,x509v3-ecdsa-sha2-nistp384,x509v3-ecdsa-sha2-nistp521,x509v3-ssh-rsa,ssh-rsa'}
DEBUG:paramiko.transport:userauth is OK
INFO:paramiko.transport:Auth banner: b'\n**********************************************************************************\n***                  WARNING - UNAUTHORIZED ACCESS PROHIBITED                  ***\n***  You are attempting to access a system that is part of a private network   ***\n***        Access and use of this system may be monitored and recorded         ***\n***   Unauthorized access and use is strictly prohibited and may be referred   ***\n***                             to law enforcement                             ***\n**********************************************************************************\n*                          CORE SERVICES    AR2022-001                           *\n**********************************************************************************\n\n'
INFO:paramiko.transport:Authentication (password) successful!
DEBUG:paramiko.transport:[chan 0] Max packet in: 32768 bytes
DEBUG:paramiko.transport:Received global request "[email protected]"
DEBUG:paramiko.transport:Rejecting "[email protected]" global request from server.
DEBUG:paramiko.transport:Debug msg: b'AUTH: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
DEBUG:paramiko.transport:[chan 0] Max packet out: 32768 bytes
DEBUG:paramiko.transport:Secsh channel 0 opened.
DEBUG:paramiko.transport:[chan 0] Sesch channel 0 request ok
DEBUG:paramiko.transport:[chan 0] Sesch channel 0 request ok
DEBUG:netmiko:write_channel: b'\n'
DEBUG:netmiko:read_channel: Last login: Thu Jun  1 22:03:49 2023 from 17.149.238.241



DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:


DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel: RP/0/RP0/CPU0:usgrx107-bbisp-gw1#

RP/0/RP0/CPU0:usgrx107-bbisp-gw1#
DEBUG:netmiko:Pattern found: ([>#]) Last login: Thu Jun  1 22:03:49 2023 from 17.149.238.241




RP/0/RP0/CPU0:usgrx107-bbisp-gw1#
DEBUG:netmiko:write_channel: b'terminal width 511\n'
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel: terminal width 511

Thu Jun  1 22:12:28.531 UTC

DEBUG:netmiko:Pattern found: (terminal width 511)

RP/0/RP0/CPU0:usgrx107-bbisp-gw1#terminal width 511
DEBUG:netmiko:In disable_paging
DEBUG:netmiko:Command: terminal length 0

DEBUG:netmiko:write_channel: b'terminal length 0\n'
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel: RP/0/RP0/CPU0:usgrx107-bbisp-gw1#
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel: terminal length 0

Thu Jun  1 22:12:28.599 UTC

DEBUG:netmiko:Pattern found: (terminal\ length\ 0)

Thu Jun  1 22:12:28.531 UTC
RP/0/RP0/CPU0:usgrx107-bbisp-gw1#terminal length 0
DEBUG:netmiko:

Thu Jun  1 22:12:28.531 UTC
RP/0/RP0/CPU0:usgrx107-bbisp-gw1#terminal length 0
DEBUG:netmiko:Exiting disable_paging
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel: RP/0/RP0/CPU0:usgrx107-bbisp-gw1#
DEBUG:netmiko:Pattern found: ([>#])

Thu Jun  1 22:12:28.599 UTC
RP/0/RP0/CPU0:usgrx107-bbisp-gw1#
DEBUG:netmiko:read_channel:
DEBUG:netmiko:write_channel: b'\n'
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:

RP/0/RP0/CPU0:usgrx107-bbisp-gw1#
DEBUG:netmiko:
Parenthesis found in pattern.

pattern: (\#|>)


This can be problemtic when used in read_until_pattern().

You should ensure that you use either non-capture groups i.e. '(?:' or that the
parenthesis completely wrap the pattern '(pattern)'
DEBUG:netmiko:Pattern found: (\#|>)

RP/0/RP0/CPU0:usgrx107-bbisp-gw1#
DEBUG:netmiko:read_channel:
DEBUG:netmiko:[find_prompt()]: prompt is RP/0/RP0/CPU0:usgrx107-bbisp-gw1#
DEBUG:netmiko:read_channel:
DEBUG:netmiko:write_channel: b'\n'
DEBUG:netmiko:read_channel:
DEBUG:netmiko:write_channel: b'\n'
DEBUG:netmiko:read_channel:

RP/0/RP0/CPU0:usgrx107-bbisp-gw1#
DEBUG:netmiko:read_channel:
DEBUG:netmiko:[find_prompt()]: prompt is RP/0/RP0/CPU0:usgrx107-bbisp-gw1#
DEBUG:netmiko:write_channel: b'xml\n'
DEBUG:netmiko:read_channel:

RP/0/RP0/CPU0:usgrx107-bbisp-gw1#xml

Thu Jun  1 22:12:28.873 UTC

DEBUG:netmiko:read_channel: XML>
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:write_channel: b'<?xml version="1.0" encoding="UTF-8"?><Request MajorVersion="1" MinorVersion="0"><Lock/></Request>\n'
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel: <?xml version="1.0" encoding="UTF-8"?>
<Response MajorVersion="1" MinorVersion="0"><Lock/><ResultSummary ErrorCount="0"/></Response>
XML>
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:
DEBUG:netmiko:read_channel:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.