如何解决Ansible剧本中的“ cat”命令不会附加文件
我对ansible并不陌生,目前正在尝试创建一个简单的剧本,该剧本安装ssmtp,发送一条消息(主体为给定文件的内容),然后再次擦除ssmtp。我有/tmp/message.txt,其中存储了“从”,“至”和其他详细信息,还有/tmp/file.txt,其中只有两行12345678。
目标是发送一封电子邮件,其中主题为“ test”,正文为数字的两行。我不明白的是,为什么“ cat /tmp/file.txt >> /tmp/message.txt”没有将file.txt的内容附加到message.txt上,所以当以终端或在bash脚本中使用相同的命令时。我知道这可能是一个简单的疏忽,但是在尝试了其他几个命令之后,我似乎无法找到解决方案。剧本文字如下:
---
- name: install ssmtp and send email
hosts: the_server_itself
become: true
become_user: root
tasks:
- name: "install ssmtp"
yum:
name: ssmtp
state: latest
- name: "add mail provider"
shell:
cmd: echo -e "mailhub=smtp.gmail.com:587\n" >> /etc/ssmtp/ssmtp.conf
- name: "add auth settings"
shell:
cmd: echo -e "UseSTARTTLS=Yes \nAuthUser=<username> \nAuthPass=<password> \nAuthMethod=LOGIN \n" >> /etc/ssmtp/ssmtp.conf
- name: "send out email"
shell:
cmd: chfn -f "<sender name>" root
- name: "create message file"
file:
path: /tmp/message.txt
state: touch
- name: "append message file"
shell:
cmd: 'echo -e "From: <sender@mail.provider>\nSubject: Test\n\n" > /tmp/message.txt'
- name: "add file to message"
shell:
cmd: 'cat /tmp/file.txt >> /tmp/message.txt'
shell:
cmd: ssmtp <recipient@mail.provider> < /tmp/message.txt
- name: "erase ssmtp"
yum:
name: ssmtp
state: removed
- name: "erase message.txt"
file:
path: /tmp/message.txt
state: absent
...
在此先感谢任何答复!
解决方法
- name: "add file to message"
shell:
cmd: 'cat /tmp/file.txt >> /tmp/message.txt'
shell:
cmd: ssmtp <recipient@mail.provider> < /tmp/message.txt
这些是单独的列表项。您应该这样写,使用不同名称的不同shell命令:
- name: "add file to message"
shell:
cmd: 'cat /tmp/file.txt >> /tmp/message.txt'
- name: send with ssmtp
shell:
cmd: ssmtp <recipient@mail.provider> < /tmp/message.txt
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。