linux - Ansible grep 多个文件,然后将输出发送到邮件(使用了错误的库存)-已解决
问题描述
我试图在多个目录中获取某些文本,然后发送输出,当我在机器上使用相同的 shell 时,它可以正常工作并发送请求的输出,但是在这种情况下尝试使用 ansible 时我'我得到错误。
- name: Extract logs from server
hosts: all
tasks:
- name: execute
shell: grep -ir {{ my_var }} /var/log/folder/folder/* | mailx -s "Findings" {{ email }}
my_var: 1234-abcd-1a2b3c3d
电子邮件:bla.bla@company.com 错误:
fatal: [10.54.229.13]: FAILED! => {"changed": true, "cmd": "grep -ir 37f624c3-c898-4e2b-958a-ab78d20a03fe /var/log/3ds/components/* > /tmp/log", "delta": "0:00:00.005845", "end": "2020-10-05 17:28:17.509948", "msg": "non-zero return code", "rc": 2, "start": "2020-10-05 17:28:17.504103", "stderr": "grep: /var/log/3ds/components/*: No such file or directory", "stderr_lines": ["grep: /var/log/3ds/components/*: No such file or directory"], "stdout": "", "stdout_lines": []}
我还尝试 grep > /tmp/tmp.file 然后从那里 cat tmp.file | 邮件内容。并且在机器本身上使用时效果很好,但没有抛出 ansible。
尝试时:
"find /var/log/folder/components/* -type f -exec grep 37f624c3-c898-
{} \; > /tmp/log "
得到以下信息:
ERROR! Syntax Error while loading YAML.
found unknown escape character
The error appears to have been in '/tmp/awx_730_htsr76go/project/v2_log_extraction.yml': line 9, column 103, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- name: execute
shell: "find /var/log/folder/components/* -type f -exec grep 37f624c3-c898 {} \; > /tmp/log "
^ here
在剧本中使用 var 时
- name: Extract logs from server
hosts: all
become: yes
tasks:
- name: execute
shell: "find /var/log/folder/components/* -type f -exec grep "{{ my_var}}" {} \; | mailx -s "log" {{ email }}"
args:
executable: /bin/sh
出现以下错误:
The error appears to have been in '/tmp/awx_733_qiog0f53/project/v2_log_extraction.yml': line 9, column 64, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- name: execute
shell: "find /var/log/3ds/components/* -type f -exec grep {{ my_var}} {} \; | mailx -s "log" {{ email }}"
^ here
We could be wrong, but this one looks like it might be an issue with
missing quotes. Always quote template expression brackets when they
start a value
请建议获得结果的最佳方法
大家好,第一个代码完美运行。问题出在椅子和电脑之间:D 我用错误的服务器使用了错误的库存,确实没有 /var/log/folder/folder
感谢每一个人的帮助
解决方案
推荐阅读
- c++ - 如何以二进制格式将 C++ 对象的 std::vector 保存到磁盘?
- javascript - 将 URL 搜索参数解析为具有编码 url 的对象数组
- sql - SQL:使用 LAG 撤消 YTD cum sum,然后使用 group by 重新聚合
- bash - 无法使用 sudo 创建目录
- autosar - AUTOSAR 中的端口原型定义
- dart - 颤抖我如何在 Dart 中获得标题?
- database - 使用 000webhost 从数据库获取数据的问题
- java - 从jsp传递参数到springboot控制器
- python - 适用于非 Python 2 用户的 Python 3 super()
- angular - 子模块的角度延迟加载不起作用?