我正在尝试为绑定建立反向查找(PTR)记录。
我有一个 CSV 文件,其中 IP 和主机名字段已加载到字典中(来自 read_csv),所以我猜它实际上是一个字典列表:
ok: [localhost] => {
"msg": [
{
"changed": false,
"dict": {},
"failed": false,
"list": [
{
"hostname": "host1",
"ip": "10.32.1.32"
},
{
"hostname": "host2",
"ip": "10.50.6.71"
},
{
"hostname": "host3",
"ip": "10.36.254.41"
},
{
"hostname": "host4",
"ip": "10.36.254.42"
}
]
},
]
}
我有一个从上述字典中得出的唯一的反转最后两个八位字节列表:
ok: [localhost] => {
"msg": [
[
"32.10",
"50.10",
"36.10"
],
]
}
我想要的是一个如下所示的新字典(格式可能不正确,请原谅):
{
"32.10":
{
"hostname": "host1",
"ip": "10.32.1.32"
},
"50.10":
{
"hostname": "host2",
"ip": "10.50.6.71"
},
"36.10":
{
"hostname": "host3",
"ip": "10.36.254.41"
},
{
"hostname": "host4",
"ip": "10.36.254.42"
}
}
新的“超级”字典应该只包含匹配网络的 IP + 主机名条目(例如,所有 10.36.xx 条目都应位于“36.10”下)。
从这个新的字典中,我应该能够在模板中循环它来生成 PTR 记录。
我不知道如何合并这两个数据结构。:-/
谢谢你!
您可以使用
combine
过滤器来构建最终的词典。像这样:
我们使用以下表达式构造字典键:
这会将“abcd”之类的内容转换为“ba”。我们使用它 + 过滤器
combine
+过滤器list_merge
的选项combine
来获取最终的数据结构;上述剧本产生了以下输出: