Yogita,

Do us a favor please and change this:

   ansible.builtin.command: ./power_consumption.sh

to this:

   ansible.builtin.command: stat ./power_consumption.sh

and let us see the results. Thanks.
—
Todd

On 8/21/24 8:12 AM, Yogita Patil wrote:
Yes yes I understand what you mean, and it does work if I add #!/bin/bash’  at the beginning of my foo.sh

contents of foo.sh -
#!/bin/bash
echo "Hello world"

However my power consumption script fails. Any idea what I am doing wrong there?

Many thanks for your help!

-Yogita.

On Wed, Aug 21, 2024 at 4:07 PM Stephen Maher <[email protected]> wrote:

    Hi,

    Your bash script must in include ‘#!/bin/bash’ to allow for its
    execution using bash hence the suggestion to add the executable
    verb to prove this was the case.

    Regards



    On 21 Aug 2024, at 11:25, Yogita Patil <[email protected]>
    wrote:

    The bash was just a trial, the is the script that I really care
    about running which runs perfectly from the command line -
    myScript.yml

    - name: Shell script test
      hosts: all
      tasks:

         - name: Run a shell command
           ansible.builtin.shell: power_consumption.sh
           register: foo_result
           args:
             chdir: /usr/src
           ignore_errors: true

         - name: Run a script
           ansible.builtin.script:
             cmd: /usr/src/power_consumption.sh
           ignore_errors: true

         - name: Run a script in another way
           ansible.builtin.script: /usr/src/power_consumption.sh
           ignore_errors: true

         - name: Run a script via command line
           ansible.builtin.command: ./power_consumption.sh
           args:
             chdir: /usr/src
           ignore_errors: true


    #     - name: Run a script second way
    #       ansible.builtin.script:
    #       cmd: /usr/src/power_consumption.sh

         - name: Run a shell command using output of the previous task
           ansible.builtin.shell: /usr/src/bar.sh
           when: foo_result.rc == 5


    The contents of the power_consumption.sh script are -

    hostfqdn=$(hostname --fqdn)
    time=1
    declare T0=($(cat /sys/class/powercap/intel-rapl/*/energy_uj));
    sleep $time; declare T1=($(cat
    /sys/class/powercap/intel-rapl/*/energy_uj))
    for i in "${!T0[@]}"; do echo - | awk "{printf \"%.1f W\",
    $((${T1[i]}-${T0[i]})) / $time / 1e6 }" >> $hostfqdn.txt ; done


    I have no idea what I am doing wrong, I have tried to put the
    script in /usr/bin as well but same result for all tasks -

    TASK [Run a script via command line] *
    The full traceback is:
      File
    
"/tmp/ansible_ansible.legacy.command_payload_p_z2bc7h/ansible_ansible.legacy.command_payload.zip/ansible/module_utils/basic.py",
    line 2050, in run_command
        cmd = subprocess.Popen(args, **kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3.11/subprocess.py", line 1024, in __init__
        self._execute_child(args, executable, preexec_fn, close_fds,
      File "/usr/lib/python3.11/subprocess.py", line 1901, in
    _execute_child
        raise child_exception_type(errno_num, err_msg, err_filename)
    fatal: [100.91.187.42]: FAILED! => {
        "changed": false,
        "cmd": "./power_consumption.sh",
        "invocation": {
            "module_args": {
                "_raw_params": "./power_consumption.sh",
                "_uses_shell": false,
                "argv": null,
                "chdir": "/usr/src",
                "creates": null,
                "executable": null,
                "removes": null,
                "stdin": null,
                "stdin_add_newline": true,
                "strip_empty_ends": true
            }
        },
        "msg": "[Errno 2] No such file or directory:
    b'./power_consumption.sh'",
        "rc": 2,
        "stderr": "",
        "stderr_lines": [],
        "stdout": "",
        "stdout_lines": []
    }

    TASK [Run a script in another way] and TASK [Run a script]
    The full traceback is:
    NoneType: None
    fatal: [100.91.187.42]: FAILED! => {
        "changed": true,
        "msg": "non-zero return code",
        "rc": 2,
        "stderr": "Shared connection to 100.91.187.42 closed.\r\n",
        "stderr_lines": [
            "Shared connection to 100.91.187.42 closed."
        ],
        "stdout":
    
"/root/.ansible/tmp/ansible-tmp-1724235551.658032-3341659-128056030829200/power_consumption.sh:
    3: Syntax error: \"(\" unexpected\r\n",
        "stdout_lines": [
    
"/root/.ansible/tmp/ansible-tmp-1724235551.658032-3341659-128056030829200/power_consumption.sh:
    3: Syntax error: \"(\" unexpected"
        ]
    }

    TASK [Run a shell command
    fatal: [100.91.187.42]: FAILED! => {
        "changed": true,
        "cmd": "power_consumption.sh",
        "delta": "0:00:00.001867",
        "end": "2024-08-21 10:19:11.554061",
        "invocation": {
            "module_args": {
                "_raw_params": "power_consumption.sh",
                "_uses_shell": true,
                "argv": null,
                "chdir": "/usr/src",
                "creates": null,
                "executable": null,
                "removes": null,
                "stdin": null,
                "stdin_add_newline": true,
                "strip_empty_ends": true
            }
        },
        "msg": "non-zero return code",
        "rc": 127,
        "start": "2024-08-21 10:19:11.552194",
        "stderr": "/bin/sh: 1: power_consumption.sh: not found",
        "stderr_lines": [
            "/bin/sh: 1: power_consumption.sh: not found"
        ],
        "stdout": "",
        "stdout_lines": []
    }






    On Wed, Aug 21, 2024 at 12:36 PM Stephen Maher
    <[email protected]> wrote:

        Hi,

        This if often because your ’shell’ script has the incorrect
        shebang at the top. If its a bash script then add executable:
        /bin/bash and try again, or check your script.

        Cheers.



        On 21 Aug 2024, at 09:32, Yogita Patil
        <[email protected]> wrote:

        Thanks for the responses guys, but these are the errors I see -

        The full traceback is:
          File
        
"/tmp/ansible_ansible.legacy.command_payload_uk3ys11b/ansible_ansible.legacy.command_payload.zip/ansible/module_utils/basic.py",
        line 2050, in run_command
            cmd = subprocess.Popen(args, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          File "/usr/lib/python3.11/subprocess.py", line 1024, in
        __init__
            self._execute_child(args, executable, preexec_fn, close_fds,
          File "/usr/lib/python3.11/subprocess.py", line 1901, in
        _execute_child
            raise child_exception_type(errno_num, err_msg, err_filename)
        failed: [100.91.187.42] (item=./power_consumption.sh) => {
            "ansible_loop_var": "item",
            "changed": false,
            "cmd": "./power_consumption.sh",
            "invocation": {
                "module_args": {
                    "_raw_params": "./power_consumption.sh",
                    "_uses_shell": false,
                    "argv": null,
                    "chdir": "/usr/src/",
                    "creates": null,
                    "executable": null,
                    "removes": null,
                    "stdin": null,
                    "stdin_add_newline": true,
                    "strip_empty_ends": true
                }
            },
            "item": "./power_consumption.sh",
            "msg": "[Errno 8] Exec format error:
        b'./power_consumption.sh'",
            "rc": 8,
            "stderr": "",
            "stderr_lines": [],
            "stdout": "",
            "stdout_lines": []
        }


        I also create a simple foo.sh and tried to execute it like
        this, but here also I get errors -
        foo.sh contents -
        #!/bin/sh
        echo "Hello world"

        My TestShell script yml looks like this -

        - name: Shell script test
          hosts: all
          tasks:

             - name: Run a shell command and register its output as
        a variable
               ansible.builtin.shell: /usr/src/foo.sh
               register: foo_result
               ignore_errors: true

             - name: Run a shell command using output of the
        previous task
               ansible.builtin.shell: /usr/src/bar.sh
               when: foo_result.rc == 5


        Output of the above yml gives this error -

        fatal: [132.56.197.46]: FAILED! => {
            "changed": true,
            "cmd": "/usr/src/foo.sh",
            "delta": "0:00:00.002043",
            "end": "2024-08-21 08:32:06.317505",
            "invocation": {
                "module_args": {
                    "_raw_params": "/usr/src/foo.sh",
                    "_uses_shell": true,
                    "argv": null,
                    "chdir": null,
                    "creates": null,
                    "executable": null,
                    "removes": null,
                    "stdin": null,
                    "stdin_add_newline": true,
                    "strip_empty_ends": true
                }
            },
            "msg": "non-zero return code",
            "rc": 127,
            "start": "2024-08-21 08:32:06.315462",
            "stderr": "/bin/sh: 1: /usr/src/foo.sh: not found",
            "stderr_lines": [
                "/bin/sh: 1: /usr/src/foo.sh: not found"
            ],
            "stdout": "",
            "stdout_lines": []
        }


        On Mon, Aug 19, 2024 at 5:47 PM [email protected]
        <[email protected]> wrote:


            Create a var for script i.e.:
            script_path="/some/path/script" and use that instead of
            hard coding path
            On Sunday, August 18, 2024 at 7:14:58 AM UTC-4 Yogita
            Patil wrote:

                Hi All,

                I am simply unable to execute a shell script on the
                remote host - this is my code (all other tasks run
                correctly except the execute task)

                - name: Power consumption test
                  hosts: all
                  tasks:

                     - name: Transfer the script
                       ansible.builtin.copy:
                         src: power_consumption.sh
                         dest: /usr/src/power_consumption.sh
                         mode: '0777'

                     - name: Execute the script
                #       command: ./usr/src/power_consumption.sh
                       command: "{{ item }}"
                       args:
                         chdir: "/usr/src/"
                       with_items:
                        - "./power_consumption.sh"
                       ignore_errors: true

                     - name: Remove shell script from remote server
                       file:
                         path: /usr/src/power_consumption.sh
                         state: absent

                     - name: Copy shell script output from remote server
                       fetch:
                         src: /usr/src/{{ ansible_fqdn }}.txt
                         dest: /usr/src
                         mode: '0777'
                         with_fileglob:
                          _ "*.txt"


                I have also tried with the shell: , script: sh ways
                of executing the script and none of them work, can
                someone tell me what I am doing wrong? TIA.


-- 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/8da4e506-2504-4724-b4e9-c1d45c61800dn%40googlegroups.com
            
<https://groups.google.com/d/msgid/ansible-project/8da4e506-2504-4724-b4e9-c1d45c61800dn%40googlegroups.com?utm_medium=email&utm_source=footer>.


-- 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/CAC15M2K3t7%2BtseL5gi%2BX_nE%3D3JtsBjfHU8rdxO48puT_m%2BgV8A%40mail.gmail.com
        
<https://groups.google.com/d/msgid/ansible-project/CAC15M2K3t7%2BtseL5gi%2BX_nE%3D3JtsBjfHU8rdxO48puT_m%2BgV8A%40mail.gmail.com?utm_medium=email&utm_source=footer>.


-- 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/5511D1E4-BE4E-4EF3-98E6-0AA3F39B5470%40gmail.com
        
<https://groups.google.com/d/msgid/ansible-project/5511D1E4-BE4E-4EF3-98E6-0AA3F39B5470%40gmail.com?utm_medium=email&utm_source=footer>.


-- 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/CAC15M2JRN_W0Vek4fPQ_2%2BZyZVb5Y3UWxR3uNF31bkRWVYm7rw%40mail.gmail.com
    
<https://groups.google.com/d/msgid/ansible-project/CAC15M2JRN_W0Vek4fPQ_2%2BZyZVb5Y3UWxR3uNF31bkRWVYm7rw%40mail.gmail.com?utm_medium=email&utm_source=footer>.

-- 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/EF7A07E8-354B-4E93-A9A5-B2193CD48288%40gmail.com
    
<https://groups.google.com/d/msgid/ansible-project/EF7A07E8-354B-4E93-A9A5-B2193CD48288%40gmail.com?utm_medium=email&utm_source=footer>.

--
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/CAC15M2KBqHY1LwtBJVGMV%3D2RwXQ1QDSsSJ-W6EmguD37n-KS3A%40mail.gmail.com <https://groups.google.com/d/msgid/ansible-project/CAC15M2KBqHY1LwtBJVGMV%3D2RwXQ1QDSsSJ-W6EmguD37n-KS3A%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
Todd

--
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/9c4ea274-1bd6-4620-b974-b345b8ff1e5c%40gmail.com.

Reply via email to