我正在尝试使用 Ansible 编写一些自动化,但我遇到了一种情况,我需要在剧本后面的任务中使用命令输出的多个部分。
我有一个任务要运行命令“lspci | grep Ethernet | grep Gigabit”
输出应该是这样的(应该是 2 行输出):
"02:00.0 Ethernet controller: Intel Corporation 82575EB Gigabit Network Connection (rev 02)"
"02:00.1 Ethernet controller: Intel Corporation 82575EB Gigabit Network Connection (rev 02)
Run Code Online (Sandbox Code Playgroud)
从这个输出中,我需要提取 4 条信息作为变量。
var1 - 我想要第一行的总线。应该是“02”
var2 - 我想要第一行的功能。应该是“0”
var3 - 我想要第二条线路的总线。应该是“02”
var4 - 我想要第二行的功能。应该是“1”
我如何将输出中的信息提取到这 4 个变量中?不一定非得是获得所有 4 个变量的单一游戏。
谢谢您的帮助。
按照建议,您应该查看register命令的输出。之后,您可以遍历结果并获取您感兴趣的部分。
工作示例:
- name: Fun with lspci output
hosts: localhost
connection: local
tasks:
- name: get Gigabit Ethernet adapters
shell: lspci | grep Ethernet | grep Gigabit | awk '{print $1}'
register: eth_adapters
- name: use extracted info
debug: msg="Adapter found, bus {{item.split(':')[0]}}, function {{item.split('.')[-1]}}"
with_items: "{{eth_adapters.stdout_lines}}"
Run Code Online (Sandbox Code Playgroud)
请注意使用eth_adapters.stdout_lines将命令输出作为项目列表awk '{print $1}'获取,而仅获取设备的总线信息。
此示例产生以下输出:
PLAY [Fun with lspci output] ***************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [get Gigabit Ethernet adapters] *******************************************
changed: [localhost]
TASK [use extracted info] ******************************************************
ok: [localhost] => (item=00:00.0) => {
"item": "00:00.0",
"msg": "Adapter found, bus 00, function 0"
}
ok: [localhost] => (item=00:01.0) => {
"item": "00:01.0",
"msg": "Adapter found, bus 00, function 0"
}
ok: [localhost] => (item=00:01.1) => {
"item": "00:01.1",
"msg": "Adapter found, bus 00, function 1"
}
ok: [localhost] => (item=00:01.3) => {
"item": "00:01.3",
"msg": "Adapter found, bus 00, function 3"
}
PLAY RECAP *********************************************************************
localhost : ok=3 changed=1 unreachable=0 failed=0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5240 次 |
| 最近记录: |