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.