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.

Reply via email to