如何解决如何从输出中获取值来自接口的 ip 地址并将其存储到变量
- 我正在编写剧本任务以从输出中获取 IP 地址并存储该值并将其用于其他任务。
Ansible 手册
- name:提取二级路由器ipsec隧道地址
主持人:次要
收集事实:假
连接:本地
标签:
- "sec_tunnel_ip" 任务:
- name:提取 Tunnel1 ipsec 接口地址 ios_命令: 命令:“sh ip int br | sec Tunnel1” 注册:save_tunn_out
- 调试: msg: "{{save_tunn_out.stdout}}"
我得到如下输出:
好的:[172.16.12.1] => { “味精”:[ "Tunnel1 172.16.121.54 YES 手动向上\nTunnel100 10.0.0.101 YES 手动向上" ] }
但是我想像下面一样提取第一个ip接口输出(对于tunnel1),并将其存储在一个变量中。
172.16.121.54
我不知道如何在没有正则表达式的情况下获取它并将其存储在变量中。
请帮忙!
解决方法
如果您不想使用正则表达式(这将是您的最佳选择),则必须依靠拆分字符串。
假设它总是在 Tunnel1 之后,后跟一个空格,你可以这样做。
- name: Extract Tunnel1 ipsec interface address
set_fact:
save_tunn_out: "Tunnel1 172.16.121.54 YES manual up up \nTunnel100 10.0.0.101 YES manual up up"
- name: Extract IP address
debug:
var: save_tunn_out.split("Tunnel1 ")[1].split(" ")[0]
哪个给你想要的输出
ok: [localhost] => {
"save_tunn_out.split(\"Tunnel1 \")[1].split(\" \")[0]": "172.16.121.54"
}
之后要存储在变量中,您可以像这样使用 set_fact
- name: Store in a variable
set_fact:
ip_address: "{{save_tunn_out.split('Tunnel1 ')[1].split(' ')[0]}}"
- name: Debug variable
debug:
msg: "Ip address is : {{ip_address}}"
输出:
ok: [localhost] => {
"msg": "Ip address is : 172.16.121.54"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。