06-08-2021 08:22 AM
Dear colleagues
I'm running a script to automate bulk commands across devices and some of them I can only access via telnet.
However it seems like the connect() functions sometimes misses the login time and ends up failing:
aix@N10-ACASTRO:~/pyats2$ /usr/bin/python3 /home/aix/pyats2/main.py 2021-06-08 14:54:38,901: %UNICON-INFO: +++ RT-BIOCOM-TRANSBRAS logfile /tmp/RT-1-cli-20210608T145438895.log +++ 2021-06-08 14:54:38,902: %UNICON-INFO: +++ Unicon plugin ios +++ Trying 10.9.248.1... 2021-06-08 14:54:38,943: %UNICON-INFO: +++ connection to spawn: telnet 10.9.248.1, id: 140453737108536 +++ 2021-06-08 14:54:38,944: %UNICON-INFO: connection to RT-1 Connected to 10.9.248.1. Escape character is '^]'. User Access Verification Username: Um erro ocorreu ao conectar ao dispositivo Device RT-BIOCOM-TRANSBRAS, type ios Conectando ao dispositivo Device RT-1, type ios Trying 10.9.248.1... 2021-06-08 14:54:50,871: %UNICON-INFO: +++ connection to spawn: telnet 10.9.248.1, id: 140453703976160 +++ 2021-06-08 14:54:50,872: %UNICON-INFO: connection to RT-1 Connected to 10.9.248.1. Escape character is '^]'.
Is there any way to fix or adjust the timing properly?
Below a python snippet
from genie.conf import Genie testbed = Genie.init("my-testbed-2.yaml") for device in testbed: device.connect()
Thank you
06-21-2021 08:53 AM
Hello @Andre Castro,
Is there a specific orchestration or management software you're using? I'd like to know which technology and which release version you're running before I make any suggestions. I think other user could benefit from that as well.
Best regards!
07-07-2021 09:35 AM
07-07-2021 09:22 AM - edited 07-07-2021 09:23 AM
Hello Andre,
Like Alex mentioned above, we need more information before we can make suggestions. However, if you're still facing the issue, I'd recommend you to test the telnetlib in a separated environment so you can learn how to use it and the outputs you'll receive while using it.
Telnetlib comes with Python and it supports timeout, here's the docs: https://docs.python.org/3/library/telnetlib.html
A simple code snippet with telnet and send a command:
import socket import telnetlib import time device = "" user = "" password = "" try: client = telnetlib.Telnet(host=device,port=23, timeout=100) client.read_until(b"username: ") client.write(user.encode('ascii') + b"\n") if password: client.read_until(b"password: ") client.write(password.encode('ascii') + b"\n") client.write(b"show ip int brief\n") time.sleep(2) client.write(b"exit\n")) print(client.read_all().decode('ascii')) except socket.timeout: print("Socket timed out while connecting to " + device)
Hope that can shed some light, let us know if you solved the issue.
Best Regards,
Renan
07-07-2021 09:38 AM
Hi @renanhingel
Thank you for the suggestion.
Surely I can use this method but I'm still curious about the pyATS library, as opposed to Ansible for instance which runs flawlessly, there is a lot of additional overhead in it though.
Cheers!
08-01-2021 10:23 PM
Hi how can I improve my skills due to it
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide