如何从输出中获取值(来自接口的 ip 地址)并将其存储到变量
How to get the value(ip address from interface) from the output and store it to variable
- 我正在编写一个 playbook 任务以从输出中获取 IP 地址并存储该值并将其用于其他任务。
Ansible 剧本
- name: 提取辅助路由器ipsec隧道地址
主持人:次要
gather_facts: 错误
连接:本地
标签:
- "sec_tunnel_ip"
任务:
- name: 提取 Tunnel1 ipsec 接口地址
ios_command:
命令:“sh ip int br | sec Tunnel1”
注册:save_tunn_out
- 调试:
味精:“{{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 之后,然后是 space,你可以这样做。
- 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"
}
- 我正在编写一个 playbook 任务以从输出中获取 IP 地址并存储该值并将其用于其他任务。
Ansible 剧本
- name: 提取辅助路由器ipsec隧道地址
主持人:次要
gather_facts: 错误
连接:本地
标签:
- "sec_tunnel_ip" 任务:
- name: 提取 Tunnel1 ipsec 接口地址 ios_command: 命令:“sh ip int br | sec Tunnel1” 注册:save_tunn_out
- 调试: 味精:“{{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 之后,然后是 space,你可以这样做。
- 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"
}