python - 将列表与字符串进行比较并在字符串中打印列表的匹配行

标签 python python-3.6

我正在尝试将列表与字符串文本进行比较,并打印与列表中的元素匹配的行

我尝试了以下代码,但获取的 IP 地址不在列表中的行

acl = """
 access-list access_myside_in line 1 extended permit tcp host 18.1.1.12 host 15.2.3.4 eq ssh
access-list access_myside_in line 2 extended permit tcp host 18.1.2.2 host 15.1.3.4 eq ssh
access-list access_myside_in line 3 extended permit tcp host 16.1.1.2 host 5.2.23.4 eq ssh
access-list access_myside_in line 4 extended permit tcp host 18.2.1.2 host 15.2.1.4 eq ssh
access-list access_myside_in line 5 extended permit tcp host 10.1.1.2 host 15.2.3.14 eq ssh
access-list access_myside_in line 6 extended permit tcp host 13.1.1.2 host 10.2.3.4 eq ssh
access-list access_myside_in line 7 extended permit tcp host 18.1.1.2 host 12.2.3.4 eq ssh
access-list access_myside_in line 8 extended permit tcp host 12.1.1.2 host 9.2.3.4 eq ssh
access-list access_myside_in line 9 extended permit tcp host 15.1.1.2 host 15.22.3.4 eq ssh
access-list access_myside_in line 10 extended permit tcp host 5.1.1.2 host 11.2.3.4 eq ssh
access-list access_myside_in line 19 extended permit tcp host 1.1.1.2 host 15.2.13.4 eq ssh
access-list access_myside_in line 25 extended permit tcp host 11.1.1.2 host 15.12.3.4 eq ssh
access-list access_myside_in line 30 extended permit tcp host 8.1.1.2 host 5.2.3.4 eq ssh
access-list access_myside_in line 31 extended permit tcp host 111.1.1.2 host 15.2.3.40 eq ssh
access-list access_myside_in line 33 extended permit tcp host 18.1.11.2 host 17.2.3.4 eq ssh
access-list access_myside_in line 40 extended permit tcp host 19.1.1.2 host 55.2.3.4 eq ssh
access-list access_myside_in line 49 extended permit tcp host 20.1.1.2 host 80.2.3.4 eq ssh

"""

 myip = ['18.1.1.2', '20.1.1.2', '5.2.3.4', '15.2.3.4', '9.2.3.4', '8.1.1.2 ', '11.2.3.4']


acl_match = []
for a in myip:
   for b in acl.splitlines():
      if a in b:
         acl_match.append(b)


print(acl_match)
['access-list access_myside_in line 7 extended permit tcp host 18.1.1.2 host 12.2.3.4 eq ssh', 
'access-list access_myside_in line 49 extended permit tcp host 20.1.1.2 host 80.2.3.4 eq ssh', 
'access-list access_myside_in line 1 extended permit tcp host 18.1.1.12 host 15.2.3.4 eq ssh',
'access-list access_myside_in line 30 extended permit tcp host 8.1.1.2 host 5.2.3.4 eq ssh', 
'access-list access_myside_in line 31 extended permit tcp host 111.1.1.2 host 15.2.3.40 eq ssh', 
'access-list access_myside_in line 40 extended permit tcp host 19.1.1.2 host 55.2.3.4 eq ssh', 
'access-list access_myside_in line 1 extended permit tcp host 18.1.1.12 host 15.2.3.4 eq ssh', 
'access-list access_myside_in line 31 extended permit tcp host 111.1.1.2 host 15.2.3.40 eq ssh', 
'access-list access_myside_in line 8 extended permit tcp host 12.1.1.2 host 9.2.3.4 eq ssh', 
'access-list access_myside_in line 7 extended permit tcp host 18.1.1.2 host 12.2.3.4 eq ssh', 
'access-list access_myside_in line 30 extended permit tcp host 8.1.1.2 host 5.2.3.4 eq ssh', 
'access-list access_myside_in line 10 extended permit tcp host 5.1.1.2 host 11.2.3.4 eq ssh']

最佳答案

如果格式一致,您可以在每一行中搜索每个 ip(前后有空格),也可以使用正则表达式。

acl = r"""
access-list access_myside_in line 1 extended permit tcp host 18.1.1.12 host 15.2.3.4 eq ssh
access-list access_myside_in line 2 extended permit tcp host 18.1.2.2 host 15.1.3.4 eq ssh
access-list access_myside_in line 3 extended permit tcp host 16.1.1.2 host 5.2.23.4 eq ssh
access-list access_myside_in line 4 extended permit tcp host 18.2.1.2 host 15.2.1.4 eq ssh
access-list access_myside_in line 5 extended permit tcp host 10.1.1.2 host 15.2.3.14 eq ssh
access-list access_myside_in line 6 extended permit tcp host 13.1.1.2 host 10.2.3.4 eq ssh
access-list access_myside_in line 7 extended permit tcp host 18.1.1.2 host 12.2.3.4 eq ssh
access-list access_myside_in line 8 extended permit tcp host 12.1.1.2 host 9.2.3.4 eq ssh
access-list access_myside_in line 9 extended permit tcp host 15.1.1.2 host 15.22.3.4 eq ssh
access-list access_myside_in line 10 extended permit tcp host 5.1.1.2 host 11.2.3.4 eq ssh
access-list access_myside_in line 19 extended permit tcp host 1.1.1.2 host 15.2.13.4 eq ssh
access-list access_myside_in line 25 extended permit tcp host 11.1.1.2 host 15.12.3.4 eq ssh
access-list access_myside_in line 30 extended permit tcp host 8.1.1.2 host 5.2.3.4 eq ssh
access-list access_myside_in line 31 extended permit tcp host 111.1.1.2 host 15.2.3.40 eq ssh
access-list access_myside_in line 33 extended permit tcp host 18.1.11.2 host 17.2.3.4 eq ssh
access-list access_myside_in line 40 extended permit tcp host 19.1.1.2 host 55.2.3.4 eq ssh
access-list access_myside_in line 49 extended permit tcp host 20.1.1.2 host 80.2.3.4 eq ssh

"""

acl = [ x for x in  acl.splitlines()]

myip = ['18.1.1.2', '20.1.1.2', '5.2.3.4', '15.2.3.4', '9.2.3.4', '8.1.1.2 ', '11.2.3.4']

acl_match = []
for ip in myip:
    for string in acl:
        if string.find(" " + ip + " ")!=-1:
            acl_match.append(string)
            #print(string)

print(acl_match)

access-list access_myside_in line 7 extended permit tcp host 18.1.1.2 host 12.2.3.4 eq ssh
access-list access_myside_in line 49 extended permit tcp host 20.1.1.2 host 80.2.3.4 eq ssh
access-list access_myside_in line 30 extended permit tcp host 8.1.1.2 host 5.2.3.4 eq ssh
access-list access_myside_in line 1 extended permit tcp host 18.1.1.12 host 15.2.3.4 eq ssh
access-list access_myside_in line 8 extended permit tcp host 12.1.1.2 host 9.2.3.4 eq ssh
access-list access_myside_in line 10 extended permit tcp host 5.1.1.2 host 11.2.3.4 eq ssh

关于python - 将列表与字符串进行比较并在字符串中打印列表的匹配行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58288588/

相关文章:

amazon-s3 - 使用 boto3 创建带有自定义 header 的 s3 预签名 url (put)

python - 返回 lambda 的函数的类型注释

python - 设置 kivy 整数的最小值和最大值

python - 单个 python 文件中的多个类具有不同的依赖关系

python - 是什么决定了这个 python 3 代码中集合元素的顺序?

python - 使用 Python 从点生成矩形

python - 模糊正则表达式 : fuzzy count for substitution is always 1

python - 将函数应用于 Dask : How do you specify the grouped Dataframe as argument in the function? 中的分组数据帧

python - 如何在Python 2.7中计算两个时间字符串与时区的差异?

python - 正如在 argparse 中使用互斥参数一样?