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,然后从那里开始管理tmp.file | mailx内容。 并且可以在机器本身上使用时正常工作,但不能扔掉。

尝试时:

"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

感谢每个人的帮助

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...