Hi Dick,
Thanks for the Advice. It works like charm.
I modified the code as below and it works as desired. Again Many thanks for
your valuable Suggestion
- name: list html files
delegate_to: localhost
find:
paths: /tmp/sanity
patterns: '*.html'
run_once: true
register: list_html_files
- debug: msg="{{list_html_files}}"
- name: email results
ignore_errors: true
run_once: true
mail:
host: "{{smtp_host}}"
port: 25
subject: "{{ inventory_file.split('/')[-1] }} "
body: Test
from: xxxx
to: "yyy"
attach: "{{ item.path }}"
charset: utf8
delegate_to: localhost
with_items: "{{ list_html_files.files }}"
On Friday, September 6, 2019 at 5:23:39 AM UTC+5:30, Dick Visser wrote:
>
> Hi
>
> You deliberately replaced newlines with spaces, so now your creative
> find/tr/xargs/sort command yields only one (1) line.
> Hence the attach parameter will see one line that isn't a file, and fail.
> I will repeat my previous advice: drop the shell and use the find module.
> The documentation is here:
> https://docs.ansible.com/ansible/latest/modules/find_module.html
>
> That will give you exactly what you want.
>
> Dick
>
> On Thu, 5 Sep 2019 at 15:21, Rakesh Parida <[email protected]
> <javascript:>> wrote:
> >
> > Hi Dick/Abhijit,
> >
> > The problem is not searching the file in the location. the problem is
> "attach" inside mail module doesn't recognize the variable reference(it
> takes hard coded path).I dont want to hard code path inside attach. I want
> to use the variable reference inside attach module.
> >
> > In the debug of "list_html_files" below it clearly shows that the html
> files are present. i am using ansible.2.7.5
> >
> > Pls suggest how can i achieve this.
> >
> >
> > ok: [10.253.173.111] => {
> > "msg": {
> > "changed": true,
> > "cmd": "find /tmp/sanity_RIC1/ -type f -regex \".*.html\" | tr
> -s '\\n' ' ' | xargs | sort",
> > "delta": "0:00:00.006235",
> > "end": "2019-09-05 04:03:01.195198",
> > "failed": false,
> > "rc": 0,
> > "start": "2019-09-05 04:03:01.188963",
> > "stderr": "",
> > "stderr_lines": [],
> > "stdout": "/tmp/sanity_RIC1/sanity_RIC1IC01_20190905-040234.html
> /tmp/sanity_RIC1/sanity_RIC1IC02_20190905-040247.html",
> > "stdout_lines": [
> > "/tmp/sanity_RIC1/sanity_RIC1IC01_20190905-040234.html
> /tmp/sanity_RIC1/sanity_RIC1IC02_20190905-040247.html"
> > ]
> > }
> >
> >
> > On Thursday, September 5, 2019 at 6:03:22 PM UTC+5:30, Abhijeet Kasurde
> wrote:
> >>
> >> Additionally, you can use `fileglob` -
> https://docs.ansible.com/ansible/latest/plugins/lookup/fileglob.html for
> getting desired files from given directory structure.
> >>
> >> On Thu, Sep 5, 2019 at 5:14 PM Dick Visser <[email protected]> wrote:
> >>>
> >>> On Thu, 5 Sep 2019 at 12:11, Rakesh Parida <[email protected]>
> wrote:
> >>> >
> >>> > I have a code as below and i have my html files present in
> /tmp/sanity/ .
> >>> > but i am getting error as "Failed to send mail: can't attach file" i
> get file not found
> >>>
> >>> Well that's pretty clear: the file is not found.
> >>> Debug what is in list_html_files.stdout_lines[0] and adjust that.
> >>> Without any further information it's hard to tell.
> >>>
> >>> On a related note, instead of fragile shell find/tr/xargs/sort , I
> >>> would strongly suggest to use the 'find' module.
> >>> That will at least return a standard data structure (which is easier
> >>> to offer help with).
> >>>
> >>>
> >>> Dick
> >>>
> >>>
> >>>
> >>> > - name: list html files
> >>> > run_once: true
> >>> > local_action: shell find /tmp/sanity/ -type f -regex ".*.html"
> | tr -s '\n' ' ' | xargs | sort
> >>> > register: list_html_files
> >>> > - debug: msg="{{ list_html_files }}"
> >>> >
> >>> > - name: generate final email body
> >>> > run_once: true
> >>> > local_action: shell for i in `find /tmp/sanity/ -type f -regex
> ".*email.*.txt" | sort`; do cat $i ;done
> >>> > register: email_body
> >>> > - debug: msg="{{email_body}}"
> >>> >
> >>> > - name: email results
> >>> > become: true
> >>> > ignore_errors: true
> >>> > run_once: true
> >>> > mail:
> >>> > host: "{{smtp_host}}"
> >>> > port: 25
> >>> > subject: "raka"
> >>> > body: '{{ email_body.stdout }}'
> >>> > from: xxxxxxx
> >>> > to: "{{ email | default('xxxxxx') }}"
> >>> > attach:
> >>> > - '{{ list_html_files.stdout_lines[0] }}'
> >>> > charset: utf8
> >>> > delegate_to: localhost
> >>> >
> >>> > --
> >>> > You received this message because you are subscribed to the Google
> Groups "Ansible Project" group.
> >>> > To unsubscribe from this group and stop receiving emails from it,
> send an email to [email protected].
> >>> > To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/69c639e2-ce8f-4931-90f4-bdb3ee0c00b5%40googlegroups.com.
>
>
> >>>
> >>>
> >>>
> >>> --
> >>> Dick Visser
> >>> Trust & Identity Service Operations Manager
> >>> GÉANT
> >>>
> >>> --
> >>> You received this message because you are subscribed to the Google
> Groups "Ansible Project" group.
> >>> To unsubscribe from this group and stop receiving emails from it, send
> an email to [email protected].
> >>> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/CAL8fbwP2kZX9OUGm%2BFFY8FyK2D%3D5RpG5y6JkXpkctheUVmPMqg%40mail.gmail.com.
>
>
> >>
> >>
> >>
> >> --
> >> Thanks,
> >> Abhijeet Kasurde
> >
> > --
> > You received this message because you are subscribed to the Google
> Groups "Ansible Project" group.
> > To unsubscribe from this group and stop receiving emails from it, send
> an email to [email protected] <javascript:>.
> > To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/db3d886d-13c7-439c-a7ef-9a8f623d4937%40googlegroups.com.
>
>
>
>
>
> --
> Dick Visser
> Trust & Identity Service Operations Manager
> GÉANT
>
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/f68fc993-0c2b-4203-b42f-18520a886b55%40googlegroups.com.