You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Ansible输出中捕获FQDN与IP地址变量?

从Ansible dig输出中批量提取FQDN与IP地址

问题场景

批量查询DNS记录时,需要从dig命令的输出中提取原始FQDN、对应的CNAME(若存在)及IP地址,输出格式要求类似:

www.facebook.com - star-mini.c10r.facebook.com.
157.240.202.35

解决方案

  1. 执行DNS查询并捕获结果
    先通过command模块执行dig命令,用register捕获所有查询结果:

    - name: 批量查询DNS记录
      command: dig +short {{ item }}
      loop:
        - www.facebook.com
        - www.google.com
        - www.github.com
      register: dns_query_results
    
  2. 格式化提取并输出
    遍历捕获的结果集,根据dig输出的行内容(stdout_lines)进行判断,分场景格式化输出:

    - name: 格式化输出FQDN与对应地址
      debug:
        msg: >
          {% if item.stdout_lines | length >= 2 %}
          {{ item.item }} - {{ item.stdout_lines[0] }}
          {{ item.stdout_lines[1:] | join('\n') }}
          {% else %}
          {{ item.item }}
          {{ item.stdout_lines | join('\n') }}
          {% endif %}
      loop: "{{ dns_query_results.results }}"
    

关键说明

  • item.item:对应loop中传入的原始FQDN(如www.facebook.com)
  • item.stdout_lines:dig命令的输出按行拆分后的列表,dig +short会将CNAME放在首行,后续行是对应IP
  • 条件判断处理两种场景:存在CNAME+IP的记录、仅存在IP的记录
  • 若单域名对应多个IP,stdout_lines[1:] | join('\n')会将所有IP逐行输出

内容的提问来源于stack exchange,提问作者SJS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:55:04