Ansible。试图从字符串中获取IP地址的第三个八位字节以用作变量

Ansible。试图从字符串中获取IP地址的第三个八位字节以用作变量,ansible,Ansible,我们一直在尝试获取IP地址的第三个八位字节,方法是将输出放入一个变量,然后将其拆分。不确定是否有更好的方法,但以下是我尝试过但没有成功的方法 --- - name: Gather Information' ios_command: commands: - show run int g0/1.220 | in ip add register: output - msg: var="{{ output.stdout.split(" "

我们一直在尝试获取IP地址的第三个八位字节,方法是将输出放入一个变量,然后将其拆分。不确定是否有更好的方法,但以下是我尝试过但没有成功的方法

---
- name: Gather Information'
  ios_command:
    commands:
      - show run int g0/1.220 | in ip add
  register: output

- msg: 
  var="{{ output.stdout.split(" ")[3] }}""

the output looks like "IP address 10.10.80.1 255.255.255.224".
我试着把它除以,得到IP,然后再除以,得到第三个八位组。“80”用作其他地方的变量

jmyths有什么问题吗

{{output.stdout.split(" ")[2].split(".")[2]}}
反正你也快到了

--编辑--Oops。错误的语言

{{ output.stdout | regex_replace("^[^0-9]+[0-9]+\.[0-9]+\.([0-9]+)\.[0-9]+ .*$", "\\1") }}
这应该将regex_replace过滤器应用于output.stdout,使用匹配字符串“start then not number后跟nums.nums.(match 1.nums anything)”,并将其替换为匹配组1

对不起。我误解了您使用的脚本语言,当我看到标记时,我快速地重复了一遍。

怎么了

{{output.stdout.split(" ")[2].split(".")[2]}}
反正你也快到了

--编辑--Oops。错误的语言

{{ output.stdout | regex_replace("^[^0-9]+[0-9]+\.[0-9]+\.([0-9]+)\.[0-9]+ .*$", "\\1") }}
这应该将regex_replace过滤器应用于output.stdout,使用匹配字符串“start then not number后跟nums.nums.(match 1.nums anything)”,并将其替换为匹配组1


对不起。我误解了您正在使用的脚本语言,当我看到标记时,我快速地重复了一遍。

Hi Sam,尝试添加最后一点。。。错误!我们既不能读取JSON,也不能读取YAML,这些都是我们从中得到的错误:JSON:加载YAML时没有JSON对象可以被解码语法错误。找不到预期的“:”错误出现在“/home/ansible/roles/info\u collecting/tasks/main.yml”:第10行第1列,但可能在文件的其他位置,具体取决于语法问题。非常抱歉。你能试试更新后的过滤器@jmyths吗?我误解了你所说的语言。谢谢你,先生。正则表达式字符串成功了。现在尝试将其扩展到脚本的下一部分。嗨,山姆,尝试添加最后一部分。。。错误!我们既不能读取JSON,也不能读取YAML,这些都是我们从中得到的错误:JSON:加载YAML时没有JSON对象可以被解码语法错误。找不到预期的“:”错误出现在“/home/ansible/roles/info\u collecting/tasks/main.yml”:第10行第1列,但可能在文件的其他位置,具体取决于语法问题。非常抱歉。你能试试更新后的过滤器@jmyths吗?我误解了你所说的语言。谢谢你,先生。正则表达式字符串成功了。现在尝试将其扩展到脚本的下一部分。