【发布时间】:2017-10-04 15:28:45
【问题描述】:
所以我似乎无法解决这个令人沮丧的问题,我想知道这里是否有人有任何想法。 我有一个 Jinja 模板,它以配置文件格式吐出一长串 IP 地址。这工作正常。问题是,当我有一个客户将多个 IP 地址存储到他们的名字模板中时,而不是将这个新 IP 保存在新行上,只需将第二个 IP 附加到第一个 IP 并用两个IP 地址连接在一起。这当然不理想。 下面是我正在使用的 Jinja 模板:
{% for cust, config in customers.items()%}
{% raw %}#{% endraw %} {{ cust }} - {{ config['type'] }}
-A INPUT -s {{ config['ipaddr'] }} -p tcp -m state --state NEW -m tcp --dport {{config['accept']}} ACCEPT
{% endfor %}
这是模板从中获取值的变量文件:
BTG-VELOCITY:
type: PBSTP
accept: 32500
connect: 33500
ipaddr:
196.167.203.65
192.167.203.65
subtype: OUTBOUND
GFAM:
type: SPOT
accept: 32501
connect: 33501
ipaddr: 192.168.563.20
subtype: AMOUNT
GUANFABANK:
type: SPOT
accept: 32503
connect: 33503
ipaddr: 192.168.563.40
subtype: STACKED
MAINBANK:
type: FWD
accept: 32504
connect: 33504
ipaddr: 192.167.203.02
subtype: TIERED
TEST-BANK:
type: PBSTP
accept: 32506
connect: 33506
ipaddr: 192.167.203.92
subtype: INBOUND
SESH:
type: SPOT
accept: 32508
connect: 33508
ipaddr: 192.167.203.63
subtype: TIERED
问题出在客户“BTG-VELOCITY”上。模板吐出这样一行
-A INPUT -s 192.168.563.20 196.168.563.20 -p tcp -m state --state NEW -m tcp --dport 32501 ACCEPT
而不是像这样期望的两行:
-A INPUT -s 192.168.563.20 -p tcp -m state --state NEW -m tcp --dport 32501 ACCEPT
-A INPUT -s 196.168.563.20 -p tcp -m state --state NEW -m tcp --dport 32501 ACCEPT
【问题讨论】:
-
为什么不添加嵌套 for 循环来遍历 ip 地址?
-
我试过这个,但我可能做错了。当我这样做时,它最终生成了一个巨大的输出文件,其中包含太多条目,并且每个客户端在每一行上都具有相同的 IP 地址值。您是否有机会建议如何正确执行此操作?