在python中搜索不起作用

时间:2014-05-26 00:52:40

标签: python-2.7

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

它不会返回任何输出。 任何人都可以建议如何解决这个问题,还有其他方法可以更有效地搜索输入吗?

感谢。

1 个答案:

答案 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