def cache(dump):
for mcast_cache in dump.split('vrId') :
if "224.0.1.25" in mcast_cache:
if "10.89.204.50" in mcast_cache:
return mcast_cache
以下是上述功能的输入:
vrId 2 G=224.0.1.24 S=10.89.204.46 Vid 103 : (HW IPMC 0 l3hash 0 hit 0)
-> Vid 103
-> 5 9 10 49
vrId 2 G=224.0.1.25 S=10.89.204.50 Vid 103 : (HW IPMC 0 l3hash 0 hit 0)
-> Vid 103
-> 5 9 10 49
vrId 2 G=224.0.1.25 S=10.89.204.49 Vid 103 : (HW IPMC 0 l3hash 0 hit 1)
-> Vid 103
-> 5 9 10 49
vrId 2 G=224.0.1.25 S=10.89.204.48 Vid 103 : (HW IPMC 0 l3hash 0 hit 0)
-> Vid 103
-> 5 9 10 49
如果源和组播组地址匹配,那么我必须返回该特定IP地址的完整输出。示例:在上面的情况下,我返回以下输出,
2 G=224.0.1.25 S=10.89.204.50 Vid 103 : (HW IPMC 0 l3hash 0 hit 0)
-> Vid 103
-> 5 9 10 49
上面的工作非常好。现在,我想用户将输入源和多播IP地址,它将被传递给在表中搜索的功能,所以我写了下面的代码,
src_address = raw_input("\nEnter SOURCE IP address of multicast sender: ")
grp_address = raw_input("\nEnter Multicast group IP address: ")
hal_dump = cache(xos.cmd("debug hal show ipv4mc"),src_address,grp_address)
def cache(dump,src_ip,grp_ip):
for mcast_cache in dump.split('vrId') :
if "grp_ip" in mcast_cache:
if "src_ip" in mcast_cache:
return mcast_cache
它不会返回任何输出。 任何人都可以建议如何解决这个问题,还有其他方法可以更有效地搜索输入吗?
感谢。
答案 0 :(得分:0)
您正在搜索字符串“grp_id”和“src_ip”,而不是您传入函数的变量。
src_address = raw_input("\nEnter SOURCE IP address of multicast sender: ")
grp_address = raw_input("\nEnter Multicast group IP address: ")
hal_dump = cache(xos.cmd("debug hal show ipv4mc"),src_address,grp_address)
def cache(dump,src_ip,grp_ip):
for mcast_cache in dump.split('vrId') :
if grp_ip in mcast_cache:
if src_ip in mcast_cache:
return mcast_cache