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] > <mailto:[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] >> <mailto:[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] <mailto:[email protected]> >> <[email protected] <mailto:[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] >> <mailto:[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] >> <mailto:[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] > <mailto:[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] > <mailto:[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.
