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

如何解析JSON输出以获取与指定MAC地址相对应的IP地址

修改后的正确Ansible任务

tasks:
  - name: 匹配目标MAC对应的IP地址
    set_fact:
      matched_ip: "{{ arp.stdout_lines | join(' ') | regex_search(regexp, '\\1') | first }}"
    vars:
      target_mac: "00 0C 29 DC 5B C2"
      regexp: 'iso\.3\.6\.1\.2\.1\.4\.22\.1\.2\.1\.([0-9.]+) "{{ target_mac }} "'

  - name: 打印匹配结果
    debug:
      msg: "MAC 00 0C 29 DC 5B C2 对应的IP为 {{ matched_ip }}"

运行后会输出目标IP:192.168.0.128

原代码的错误点

  • 变量引用错误:ARP结果存储在arp.stdout_lines列表中,不能直接对arp变量做正则匹配,需要先把列表拼接为字符串再处理
  • 正则用法错误:regex_search第一个参数直接传正则表达式即可,不需要额外加引号包裹自定义变量名
  • 正则规则错误:
    • 正则里的.属于特殊字符需要转义,否则会匹配任意字符
    • 目标MAC地址写为了不相关的00 50 56 EC 7B 81,和需求里的目标MAC不符
    • 转义符使用混乱,引号配对错误
  • 冗余操作:set_fact已经把结果赋值给了指定变量,不需要额外加register重复注册

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:54:11