从python中的telnet客户端获取可编辑的输出

从python中的telnet客户端获取可编辑的输出,python,Python,我正在尝试编写一个脚本来对网络设备(路由器、交换机)执行验证检查。我正在使用telnet向设备发送命令。我将命令telnetobject.read_until(prompt)的输出存储到一个文件中,然后通过一次迭代一行来对存储的输出运行一些验证检查。 有没有一种方法可以迭代输出而不将其存储在文件中?问题是read_until选项以一个字符串的形式给出输出,而我尝试测试的设备的输出有一个表格形式的输出,但每行上没有一致的分隔符 这是一个例子: 导入telnetlib tn=telnetlib.Te

我正在尝试编写一个脚本来对网络设备(路由器、交换机)执行验证检查。我正在使用telnet向设备发送命令。我将命令telnetobject.read_until(prompt)的输出存储到一个文件中,然后通过一次迭代一行来对存储的输出运行一些验证检查。 有没有一种方法可以迭代输出而不将其存储在文件中?问题是read_until选项以一个字符串的形式给出输出,而我尝试测试的设备的输出有一个表格形式的输出,但每行上没有一致的分隔符

这是一个例子: 导入telnetlib

tn=telnetlib.Telnet('ip address')
pwd='password'
uid='userid'

tn.read_until("login: ")
tn.write(uid + "\n")
tn.read_until("Password:")
tn.write(pwd +'\n')
tn.read_until(">",5)
tn.write('port statistics show' + '\n')
op1=tn.read_until("*>",5)
with open ('stattest-temp.txt','w') as stat:
 stat.write(op1)
上面的代码是获取一个特定的输出并将其存储在一个文件中 下面的代码是对输出进行迭代。问题是它是以表格形式出现的,并且以多个“\uu\uu”字符开头,如果使用分隔符拆分,表中的每一行都有不同数量的元素,因此很难从tn.read\u对输出进行迭代,直到它都是一个巨大的字符串”

with open ('stattest-temp.txt','r') as f:


 for line_no,line in enumerate(f):
   if line_no>5:
    if '+---------------------------------+----------------+-----------+-----------+------------+\r' in line:
     break
    else:
     x=line[:-1].split("|")
     #print x
     x1=x[1].strip()
     x2=x[2].strip()
     x3=x[3].strip()
     x4=x[4].strip()
     x5=x[5].strip()
     if x4 =="YES":
       print x1,x4
       print 'Traffic loss observed'

     elif x4=="No":
      print "session recovered"

我正在寻找一种方法来完成上述代码的第2部分,而不必将输出写入文件

我认为,如果将输出字符串拆分为换行符,这应该会复制保存到文件和迭代行的效果。基本上在
for
循环之前设置:

 f = op1.split('\n')

 for line_no,line in enumerate(f):
   if line_no>5:
    if '+---------------------------------+----------------+-----------+-----------+------------+\r' in line:
     break
    else:
     x=line[:-1].split("|")
     #print x
     x1=x[1].strip()
     x2=x[2].strip()
     x3=x[3].strip()
     x4=x[4].strip()
     x5=x[5].strip()
     if x4 =="YES":
       print x1,x4
       print 'Traffic loss observed'

     elif x4=="No":
      print "session recovered"

你能分享代码吗,或者你面临的问题。我已经尝试使用上面的示例添加尽可能多的细节。但是问题是输出中有多个列,因此如果我在换行符上拆分,我将得到所有列的值作为一个元素,包括分隔符“|”。随着行数的增加,匹配预期输出变得单调乏味。不,保持代码原样,在循环中仍然用“|”分隔似乎已经做到了这一点!我觉得自己很傻。它正盯着我的脸。谢谢!哈哈,没问题,很高兴我能帮上忙。