Python 如何逐行打印telnet输出?

Python 如何逐行打印telnet输出?,python,telnetlib,cisco-ios,Python,Telnetlib,Cisco Ios,我已经实现了一个连接到Cisco设备并收集show run输出的脚本 剧本是: 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 = t

我已经实现了一个连接到Cisco设备并收集show run输出的脚本

剧本是:

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()
脚本输出为:

\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
问题


是否有办法更改脚本,以便逐行显示输出?

您需要使用python split()检查带有分隔行的一些常见特殊字符的字符串函数,然后使用变量的长度启动for循环,然后打印。

对于
Telnet.read\u very\u eager
,它不是很清楚,但是它提到它可以读取和写入
字节,用于其他方法<代码>类型
可能是
字节

用于获取字符串:
打印(s.decode('ascii'))
(使用适当的编码)


注意:这是针对Python 3的。

不是您问题的解决方案,但是
peexpect
是否比尝试解析原始telnet?或
netmiko
作为另一个选项做得更好。耶!工作起来很有魅力!