加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Ansible yum update然后通过电子邮件将结果发送给我

发布时间:2020-12-15 18:29:57 所属栏目:安全 来源:网络整理
导读:编写一个剧本来执行yum更新,然后从每个服务器收到一封电子邮件.我希望该电子邮件包含yum.log的更改内容. 我想要的结果如下: grep [today's date] /var/log/yum.log 从每个服务器发送电子邮件. 我尝试使用shell:执行grep然后发送邮件: shell: grep '^`date
编写一个剧本来执行yum更新,然后从每个服务器收到一封电子邮件.我希望该电子邮件包含yum.log的更改内容.

我想要的结果如下:

grep [today's date] /var/log/yum.log

从每个服务器发送电子邮件.

我尝试使用shell:执行grep然后发送邮件:

shell: grep '^`date +"%b %d"`' /var/log/yum.log | mail -s "updates applied to `hostname -s` today" updatereports@mydomain.com

它只发送一封空白电子邮件.

还尝试使用mail函数,但我正在努力将多行变量转储到消息体中:

- name: test result
  ignore_errors: yes
  shell: grep "`date '+%b %d'`" /var/log/messages
  register: updated

- name: mail result
  mail:
    to: updatereports@mydomain.com
    subject: "updates applied to {{ ansible_hostname }} today"
    body: "{{ item }}"
    with_items: "{{ updated.results|map(attribute='stdout_lines')|list }}"
  when: updated.stdout

它还发送,但打印时间戳然后为yum.log中的每个匹配行生成一行错误:

['Sep 12 16:15:28 host-ng ansible-command: Invoked with warn=True executable=None _uses_shell=True _raw_params=grep "`date '+%b %d'`" /var/log/messages | tail removes=None creates=None chdir=None'

我发现这个花哨的结果|映射代码here,但是不能理解它,没有错误.

我不确定这是否是您唯一的问题,但有一个问题是您的with_items缩进不正确. with_items属于任务,而不是邮件.
- name: mail result
  mail:
    to: updatereports@mydomain.com
    subject: "updates applied to {{ ansible_hostname }} today"
    body: "{{ item }}"
  with_items: "{{ updated.results|map(attribute='stdout_lines')|list }}"
  when: updated.stdout

在这种情况下,我不确定你是否需要with_items.当你循环一组东西时,你需要使用with_items.

由于我不知道答案,如果我在哪里,我会简单地从一些简单的调试任务开始,而不是邮件.一旦看到调试结果,就应该更容易看到你需要做什么.

- name: mail result
  debug:
    msg: "{{ updated }}"
- name: mail result
  debug:
    msg: ""{{ updated.results|map(attribute='stdout_lines')|list }}""

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读