bash - 想在 ansible playbook 项目中使用 awk 命令
问题描述
这是我的剧本,如果我将第 4 项与awk
带有双引号的命令一起放入如下所示:
tasks:
- shell: "{{item}}"
with_items:
- hostname
- df -kh
- uptime
- grep -i diameter /tmp/PSC-CIPDiameter_8.1_*_1.stat.0 | awk -F"," '{ if ($4!=0 || $5!=0|| $6!=0) print "Diameter Time : "$1 " Success: "$3 " Fail: " $4" Timeout: " $5" Reject: " $6}'
register: test
- debug:
msg: "{{test.results|map(attribute='stdout_lines')|list}}"
解决方案
将 awk 代码放入从模板创建的文件中。这样,您可以单独测试代码并提高代码的可读性。例如,模板
shell> cat templates/script01.j2.awk
{
if ($4!=0 || $5!=0|| $6!=0)
print "Diameter Time:" $1 " Success:" $3 " Fail:" $4 " Timeout:" $5 " Reject:"$6;
}
和剧本
- hosts: localhost
tasks:
- template:
src: script01.j2.awk
dest: script01.awk
- shell: "{{ item }}"
loop:
- uptime
- "echo 1,2,3,4,5,6 | awk -F',' -f script01.awk"
register: test
- debug:
msg: "{{ test.results|map(attribute='stdout')|list }}"
给
"msg": [
" 17:05:13 up 3 days, 13:42, 1 user, load average: 1.93, 1.45, 1.74",
"Diameter Time:1 Success:3 Fail:4 Timeout:5 Reject:6"
]
推荐阅读
- azure - Set-AzRecoveryServicesAsrVaultContext:操作失败
- elasticsearch - 如何在嵌套 script_score 的过滤器之间添加?
- python - 当固定纵横比 QWidget 无法填满整个窗口时创建填充
- arrays - 有没有办法简化在 spark-sql 中使用嵌套数据?
- javascript - Patternlab:拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“default-src 'none'”
- javascript - 在滚动移动到下一部分
- r - filter() 未按预期运行的奇怪案例
- python - 对 Tiingo 的 Python 3.9.1 API 调用在某些代码上失败
- reactjs - 将数据复制到剪贴板无法正常工作
- r - 整洁的输出表和观星器