[英]How can i get telnet output printed line by line?
I have implemented a script that connects to a Cisco device and collects the show run output. 我已经实现了一个脚本,该脚本连接到Cisco设备并收集show run输出。
The script is: 脚本是:
import getpass
import telnetlib
import time
HOST = "10.62.149.9"
user = input("Enter your remote account: ")
password = getpass.getpass("User Password: ")
enable = getpass.getpass("Enable Password: ")
tn = telnetlib.Telnet(HOST)
tn.read_until(b"Username: ")
tn.write(user.encode('ascii') + b"\n")
if password:
tn.read_until(b"Password: ")
tn.write(password.encode('ascii') + b"\n")
tn.write(b"enable\n")
if enable:
tn.read_until(b"Password: ")
tn.write(enable.encode('ascii') + b"\n")
tn.write(b"term len 0\n")
tn.write(b"show run\n")
time.sleep(10)
s = tn.read_very_eager()
print (s)
tn.close()
The script output is: 脚本输出为:
\r\ninterface GigabitEthernet1/0/26\r\n!\r\ninterface GigabitEthernet1/0/27\r\n!\r\ninterface GigabitEthernet1/0/28\r\n!\r\ninterface GigabitEthernet1/0/29\r\n!\r\ninterface GigabitEthernet1/0/30\r\n!\r\ninterface GigabitEthernet1/0/31\r\n!\r\ninterface GigabitEthernet1/0/32\r\n!\r\ninterface GigabitEthernet1/0/33\r\n!\r\ninterface GigabitEthernet1/0/34\r\n!\r\ninterface GigabitEthernet1/0/35\r\n!\r\ninterface GigabitEthernet1/0/36\r\n!\r\ninterface GigabitEthernet1/0/37\r\n!\r\ninterface GigabitEthernet1/0/38\r\n!\r\ninterface GigabitEthernet1/0/39\r\n!\r\ninterface GigabitEthernet1/0/40\r\n!\r\ninterface GigabitEthernet1/0/41\r\n!\r\ninterface GigabitEthernet1/0/42\r\n!\r\ninterface GigabitEthernet1/0/43\r\n!\r\ninterface GigabitEthernet1/0/44\r\n!\r\ninterface GigabitEthernet1/0/45\r\n!\r\ninterface GigabitEthernet1/0/46\r\n!\r\ninterface GigabitEthernet1/0/47\r\n!\r\ninterface GigabitEthernet1/0/48\r\n no switchport\r\n ip address 10.62.149.9
255.255.255.128\r\n!\r\ninterface GigabitEthernet1/0/49\r\n!\r\ninterface GigabitEthernet1/0/50\r\n!\r\ninterface GigabitEthernet1/0/51\r\n!\r\ninterface GigabitEthernet1/0/52\r\n!\r\ninterface Vlan1\r\n no ip address\r\n shutdown\r\n!\r\ninterface Vlan10\r\n ip address 10.10.10.1
255.255.255.0\r\n!\r\ninterface Vlan199\r\n ip address 217.21.0.6 255.255.254.0\r\n no ip redirects\r\n ip ospf priority 100\r\n!\r\ninterface Vlan777\r\n ip address 7.7.7.1
Question 题
Is there a way to change the script so the output is presented line by line way? 有没有一种方法可以更改脚本,以使输出逐行显示?
The documentation for telnetlib isn't very clear about Telnet.read_very_eager
, but it mentions that it reads and writes bytes
for other methods. Telnet.read_very_eager
的文档对 Telnet.read_very_eager
不太清楚,但它提到它为其他方法读写bytes
。 type(s)
is probably bytes
. type(s)
可能是bytes
。
Use bytes.decode
to get a string: print(s.decode('ascii'))
(use the appropriate encoding) 使用bytes.decode
获取字符串: print(s.decode('ascii'))
(使用适当的编码)
Note: This is for Python 3. 注意:这是针对Python 3的。
您需要使用一些常见的特殊字符来检查字符串,这些特殊字符使用python split()函数将各行分隔开,然后使用变量长度启动for循环,然后进行打印。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.