Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inconsistent execution of script error:paramiko.buffered_pipe.PipeTimeout #3419

Open
umesh-pathak opened this issue Apr 25, 2024 · 0 comments

Comments

@umesh-pathak
Copy link

Description of Issue/Question

The script created to change hostname on severla routers and then save the config.When i run the script it works for dew devices and then throw errror.

as below

Connecging to device: 198.19.98.31
host name changed
save config working
Connecging to device: 198.19.98.33
host name changed
save config working
Connecging to device: 198.19.98.38
host name changed
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/paramiko/channel.py", line 699, in recv
out = self.in_buffer.read(nbytes, self.timeout)
File "/usr/local/lib/python3.6/site-packages/paramiko/buffered_pipe.py", line 164, in read
raise PipeTimeout()
paramiko.buffered_pipe.PipeTimeout

Setup

We have linux based bastion/jump sever ,I am running the script from that machine.

Netmiko version

Python 3.6.8 (default, Nov 14 2023, 16:29:52)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.

import netmiko
netmiko.version
'3.1.1'


Netmiko device_type (if relevant to the issue)

(Paste device_type between quotes below)

cisco routers


### Steps to Reproduce the Issue

### Error Traceback
(Paste the complete traceback of the exception between quotes below)

Connecging to device: 198.19.98.31
host name changed
save config working
Connecging to device: 198.19.98.33
host name changed
save config working
Connecging to device: 198.19.98.38
host name changed
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/paramiko/channel.py", line 699, in recv
    out = self.in_buffer.read(nbytes, self.timeout)
  File "/usr/local/lib/python3.6/site-packages/paramiko/buffered_pipe.py", line 164, in read
    raise PipeTimeout()
paramiko.buffered_pipe.PipeTimeout

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/netmiko/base_connection.py", line 550, in _read_channel_expect
    new_data = self.remote_conn.recv(MAX_BUFFER)
  File "/usr/local/lib/python3.6/site-packages/paramiko/channel.py", line 701, in recv
    raise socket.timeout()
socket.timeout

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "test2.py", line 35, in <module>
    net_connect.save_config()
  File "/usr/local/lib/python3.6/site-packages/netmiko/cisco/cisco_ios.py", line 34, in save_config
    cmd=cmd, confirm=confirm, confirm_response=confirm_response
  File "/usr/local/lib/python3.6/site-packages/netmiko/cisco_base_connection.py", line 203, in save_config
    self.enable()
  File "/usr/local/lib/python3.6/site-packages/netmiko/cisco_base_connection.py", line 18, in enable
    return super().enable(cmd=cmd, pattern=pattern, re_flags=re_flags)
  File "/usr/local/lib/python3.6/site-packages/netmiko/base_connection.py", line 1564, in enable
    if not self.check_enable_mode():
  File "/usr/local/lib/python3.6/site-packages/netmiko/cisco_base_connection.py", line 14, in check_enable_mode
    return super().check_enable_mode(check_string=check_string)
  File "/usr/local/lib/python3.6/site-packages/netmiko/base_connection.py", line 1544, in check_enable_mode
    output = self.read_until_prompt()
  File "/usr/local/lib/python3.6/site-packages/netmiko/base_connection.py", line 623, in read_until_prompt
    return self._read_channel_expect(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/netmiko/base_connection.py", line 561, in _read_channel_expect
    "Timed-out reading channel, data not available."
netmiko.ssh_exception.NetmikoTimeoutException: Timed-out reading channel, data not available.

### Relevant Python code
(Please try to essentialize your Python code to the minimum code needed to reproduce the issue)
(Paste the code between the quotes below)

from netmiko import (ConnectHandler,NetmikoTimeoutException,NetmikoAuthenticationException)
from getpass import getpass
from datetime import datetime
import itertools

Error = open("error.txt","a+")
Success = open("success.txt","a+")

Int_Devices = ['198.19.98.49', '198.19.98.56', '198.19.98.57', '198.19.98.64', '198.19.98.69', '198.19.98.72', '198.19.98.73', '198.19.98.75', '198.19.98.78', '198.19.98.80', '198.19.98.
84', '198.19.98.85', '198.19.98.86', '198.19.98.89', '198.19.98.91', '198.19.98.93', '198.19.98.94', '198.19.98.95', '198.19.98.96', '198.19.98.99', '198.19.98.100', '198.19.98.101', '19
8.19.98.105', '198.19.98.107', '198.19.98.117', '198.19.98.119', '198.19.98.139', '198.19.98.146', '198.19.98.148', '198.19.98.149', '198.19.98.150', '198.19.98.153', '198.19.98.154', '1
98.19.98.156', '198.19.98.159', '198.19.98.160', '198.19.98.161', '198.19.98.162', '198.19.98.164', '198.19.98.166', '198.19.98.167', '198.19.98.168', '198.19.98.169', '198.19.98.170', '
198.19.98.171', '198.19.98.172', '198.19.98.173', '198.19.98.174', '198.19.98.175', '198.19.98.176', '198.19.98.178', '198.19.98.179', '198.19.98.180', '198.19.98.181', '198.19.98.182', 
'198.19.98.183', '198.19.98.184', '198.19.98.185', '198.19.98.198', '198.19.98.223', '198.19.98.236', '198.19.98.245', '198.19.98.246', '198.19.99.15', '198.19.99.22', '198.19.99.25', '1
98.19.99.26', '198.19.99.36', '198.19.99.43']
Command = ['hostname ABC-SITE049-ROUTER', 'hostname ABC-SITE056-ROUTER', 'hostname ABC-SITE057-ROUTER', 'hostname ABC-SITE064-ROUTER', 'hostname ABC-SITE069-ROUT
ER', 
'hostname ABC-SITE072-ROUTER', 'hostname ABC-SITE073-ROUTER', 'hostname ABC-SITE075-ROUTER', 'hostname ABC-SITE078-ROUTER', 'hostname ABC-SITE080-ROUTER', 
'hostname ABC-SITE084-ROUTER', 'hostname ABC-SITE085-ROUTER', 'hostname ABC-SITE086-ROUTER','hostname ABC-SITE089-ROUTER', 'hostname ABC-SITE091-ROUTER', 
'hostname ABC-SITE093-ROUTER', 'hostname ABC-SITE094-ROUTER', 'hostname ABC-SITE095-ROUTER', 'hostname ABC-SITE096-ROUTER', 'hostname ABC-SITE099-ROUTER', 
'hostname ABC-SITE100-ROUTER', 'hostname ABC-SITE101-ROUTER', 'hostname ABC-SITE105-ROUTER', 'hostname ABC-SITE107-ROUTER', 'hostname ABC-SITE117-ROUTER', 
'hostname ABC-SITE119-ROUTER', 'hostname ABC-SITE139-ROUTER', 'hostname ABC-SITE146-ROUTER', 'hostname ABC-SITE148-ROUTER', 'hostname ABC-SITE149-ROUTER', 
'hostname ABC-SITE150-ROUTER', 'hostname ABC-SITE153-ROUTER', 'hostname ABC-SITE154-ROUTER', 'hostname ABC-SITE156-ROUTER', 'hostname ABC-SITE159-ROUTER', 
'hostname ABC-SITE160-ROUTER', 'hostname ABC-SITE161-ROUTER', 'hostname ABC-SITE162-ROUTER', 'hostname ABC-SITE164-ROUTER', 'hostname ABC-SITE166-ROUTER', 
'hostname ABC-SITE167-ROUTER', 'hostname ABC-SITE168-ROUTER', 'hostname ABC-SITE169-ROUTER', 'hostname ABC-SITE170-ROUTER', 'hostname ABC-SITE171-ROUTER', 
'hostname ABC-SITE172-ROUTER', 'hostname ABC-SITE173-ROUTER', 'hostname ABC-SITE174-ROUTER', 'hostname ABC-SITE175-ROUTER', 'hostname ABC-SITE176-ROUTER', 
'hostname ABC-SITE178-ROUTER', 'hostname ABC-SITE179-ROUTER', 'hostname ABC-SITE180-ROUTER', 'hostname ABC-SITE181-ROUTER', 'hostname ABC-SITE182-ROUTER', 
'hostname ABC-SITE183-ROUTER','hostname ABC-SITE184-ROUTER', 'hostname ABC-SITE185-ROUTER', 'hostname ABC-SITE198-ROUTER', 'hostname ABC-SITE223-ROUTER', 
'hostname ABC-SITE236-ROUTER','hostname ABC-SITE245-ROUTER', 'hostname ABC-SITE246-ROUTER', 'hostname ABC-SITE271-ROUTER', 'hostname ABC-SITE278-ROUTER', 
'hostname ABC-SITE281-ROUTER', 'hostname ABC-SITE282-ROUTER', 'hostname ABC-SITE292-ROUTER', 'hostname ABC-SITE299-ROUTER']
for (device,cmd) in zip(Int_Devices,Command):
        print("Connecging to device: " + device)
        try:
                net_connect = ConnectHandler(device_type = "cisco_ios" ,host = device ,username = "*******" , password ="*******",allow_auto_change=True)

        except NetmikoTimeoutException:
                output = ("The device is not reachable :" + device)
                Error.write("\n"  "\n")
                Error.write(str(datetime.now()))
                Error.write("\n"  "\n")
                Error.write(output)
                Error.write("\n"  "\n")
                continue
        except NetmikoAuthenticationException:
                output = ("There is Authentication issue in accessing the device: " +  device)
                Error.write("\n"  "\n")
                Error.write(str(datetime.now()))
                Error.write("\n"  "\n")
                Error.write(output)
                Error.write("\n"  "\n")
                continue
        net_connect.send_config_set(cmd, cmd_verify=False)
        print('host name changed')
        net_connect.save_config()
        print('save config working')
        config_done = net_connect.send_command("sh run | in hostname")
        print(config_done)
        net_connect.disconnect()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant