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

如何在Ansible中去除nslookup返回字符串的末尾单引号?

解决Ansible解析nslookup结果时FQDN末尾带单引号的问题

问题核心

你遇到两个关键问题:

  • 正则匹配时误将末尾单引号纳入结果范围
  • 循环中使用set_fact直接赋值,导致最终仅保留最后一个FQDN,而非完整的匹配列表

解决方案

直接优化正则表达式,一次性提取干净的FQDN;同时修正set_fact的赋值逻辑,确保循环中持续向列表追加元素。

修改后的完整Playbook

---
- name: Test regex expressions
  hosts: all
  gather_facts: false
  vars:
    short_name:
      - "yourserver1"
      - "yourserver2"
      - "yourserver3"
      - "yourserver4"
      - "yourserver5"

  tasks:
    - name: Query FQDN from short name using nslookup
      command: nslookup "{{ short_name_item }}"
      register: nslookup_results
      ignore_errors: yes
      loop: "{{ short_name }}"
      loop_control:
        loop_var: short_name_item

    - name: 直接提取干净的FQDN(无需后续处理)
      set_fact:
        fqdns: "{{ fqdns | default([]) + [item.stdout_lines | regex_search('Name:\\s*([^'']+)', multiline=true, group=1) | default('', true)] }}"
      loop: "{{ nslookup_results.results }}"
      loop_control:
        loop_var: item
      when: item.rc == 0 and item.stdout_lines | regex_search('Name:\\s*([^'']+)', multiline=true)

    - debug:
        var: fqdns

关键修改说明

  1. 正则表达式优化:
    将原表达式Name:\\s*([\\S]+)替换为Name:\\s*([^'']+),其中[^'']+表示匹配所有非单引号的字符,直接跳过末尾的单引号,一次性得到无冗余字符的FQDN。同时通过group=1参数直接提取分组内容,省去后续字符串替换步骤。

  2. 修复列表追加逻辑:
    使用fqdns | default([]) + [新元素]的写法,每次循环都将新提取的FQDN追加到列表中,而非直接覆盖变量,最终得到所有匹配成功的FQDN集合。

  3. 增加有效结果过滤:
    在when条件中额外判断是否匹配到有效结果,避免空字符串被加入最终列表。

替代方案(保留分步处理)

如果需要保留中间步骤,修正后的分步代码如下:

- name: Extract FQDNs from nslookup results
      set_fact:
        fqdn_step1: "{{ fqdn_step1 | default([]) + [item.stdout_lines | regex_search('Name:\\s*([^'']+)', multiline=true, group=1) | default('', true)] }}"
      loop: "{{ nslookup_results.results }}"
      loop_control:
        loop_var: item
      when: item.rc == 0

    - name: 过滤空值并整理最终列表
      set_fact:
        fqdns: "{{ fqdn_step1 | select('ne', '') | list }}"

    - debug:
        var: fqdns

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:24:54