簡體   English   中英

Ansible:從IP地址中提取前三個八位字節

[英]Ansible: Extract first three octects from an IP address

我有一個帶IP地址的字符串: 192.168.10.2

我想在Ansible中提取IP的前三個八位字節,並嘗試使用此正則表達式。

{{comp_ip | regex_replace("^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}"), "//1"}}

這不會產生任何結果。 有人可以糾正我哪里出錯了嗎?

如果已經有點分隔的IP地址,則有一種簡單的方法:

{{ comp_ip.split('.')[0:3] | join('.') }}

您做對了,只需要在Regex中使用括號即可組成一個組。 最好匹配整個ip並用$結束您的正則表達式,並在代碼中將//1更改為\\\\1

將正則表達式從:

^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}

到此正則表達式:

^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\.[0-9]{1,3}$

這是完整的代碼:

{{comp_ip | regex_replace('^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\.[0-9]{1,3}$', '\\1')}}

如果要計算您的網絡地址,可以使用Ansible ipaddr過濾器 ,該過濾器完全提供此功能: http ://docs.ansible.com/ansible/latest/playbooks_filters_ipaddr.html

---
- hosts: localhost
  vars:
    my_ip: "{{ ansible_default_ipv4.network }}/{{ ansible_default_ipv4.netmask }}"
  tasks:
    - debug: msg="network {{ my_ip | ipaddr('network') }}"
    - debug: msg="netmask {{ my_ip | ipaddr('netmask') }}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM