如何在 telnet 会话输出中使用 re 进行搜索?
How do i search with re in a telnet session output?
import getpass
import sys
import telnetlib
import re
import smtplib
print "Pasul 1"
HOST = "route-views.routeviews.org"
user = "rviews"
password = ""
tn = telnetlib.Telnet(HOST)
tn.read_until("login: ", 5)
tn.write(user + "\r\n")
tn.read_until("Password: ", 5)
tn.write(password + "\r\n")
print tn.read_until(">", 10)
y = str(tn.write("show ip route 192.0.2.1"+"\r\n"))
print tn.read_until("free", 10)
tn.write("exit"+ "\r\n")
tn.close()
print "Pasul 2"
m = re.search('Last', y)
if m:
print (m.group(0))
else:
print False
我在输出中搜索的任何内容 return 都是错误的。为什么?应该是return这个词。
这是输出:
帕苏尔 1
路线视图>
显示 ip 路由 192.0.2.1
192.0.2.1/32 的路由条目
已知通过 "bgp 6447",距离 20,公制 0
标记 19214,键入外部
最后更新于 208.74.64.40 4 天前
路由描述符块:
208.74.64.40,来自 208.74.64.40,4 天前
路由指标为 0,流量份额计数为 1
AS 跃点 1
路由标记 19214
MPLS 标签:none
路线浏览量>
帕苏尔 2
错
您没有搜索完整的字符串。我需要在搜索之前查看 y
的内容,但看起来搜索时的值是 show ip route 192.0.2.1\r\n
。根据他们的文档 Python re.search,这会 return None
。
我认为您可以像 tn.read_until("$")
那样阅读整个会话。否则我会把所有的读取连接成一个字符串并搜索它。所以在每个读取调用中
y = "%s %s" % (y, tn.read_until('my_val', 5)
您需要将来自 telnet 会话的字符串存储到 y
中才能正常工作。目前,由于这一行,您将 "show ip route 192.0.2.1\r\n"
存储在 y
中:
y = str(tn.write("show ip route 192.0.2.1"+"\r\n"))
为了完成您想要的操作,您必须存储 tn.read_until("free", 10)
以便以后能够搜索它。目前,您只是打印出来。
示例替换:
print tn.read_until("free", 10)
和
y = tn.read_until("free", 10)
print y
import getpass
import sys
import telnetlib
import re
import smtplib
print "Pasul 1"
HOST = "route-views.routeviews.org"
user = "rviews"
password = ""
tn = telnetlib.Telnet(HOST)
tn.read_until("login: ", 5)
tn.write(user + "\r\n")
tn.read_until("Password: ", 5)
tn.write(password + "\r\n")
print tn.read_until(">", 10)
y = str(tn.write("show ip route 192.0.2.1"+"\r\n"))
print tn.read_until("free", 10)
tn.write("exit"+ "\r\n")
tn.close()
print "Pasul 2"
m = re.search('Last', y)
if m:
print (m.group(0))
else:
print False
我在输出中搜索的任何内容 return 都是错误的。为什么?应该是return这个词。
这是输出:
帕苏尔 1
路线视图> 显示 ip 路由 192.0.2.1
192.0.2.1/32 的路由条目
已知通过 "bgp 6447",距离 20,公制 0
标记 19214,键入外部
最后更新于 208.74.64.40 4 天前
路由描述符块:
208.74.64.40,来自 208.74.64.40,4 天前
路由指标为 0,流量份额计数为 1
AS 跃点 1
路由标记 19214
MPLS 标签:none
路线浏览量>
帕苏尔 2
错
您没有搜索完整的字符串。我需要在搜索之前查看 y
的内容,但看起来搜索时的值是 show ip route 192.0.2.1\r\n
。根据他们的文档 Python re.search,这会 return None
。
我认为您可以像 tn.read_until("$")
那样阅读整个会话。否则我会把所有的读取连接成一个字符串并搜索它。所以在每个读取调用中
y = "%s %s" % (y, tn.read_until('my_val', 5)
您需要将来自 telnet 会话的字符串存储到 y
中才能正常工作。目前,由于这一行,您将 "show ip route 192.0.2.1\r\n"
存储在 y
中:
y = str(tn.write("show ip route 192.0.2.1"+"\r\n"))
为了完成您想要的操作,您必须存储 tn.read_until("free", 10)
以便以后能够搜索它。目前,您只是打印出来。
示例替换:
print tn.read_until("free", 10)
和
y = tn.read_until("free", 10)
print y