This worked for me ...hooray!!! Many thanks everyone for all your inputs
and support!!!
- name: Shell script test
hosts: all
gather_facts: false
tasks:
- name: Start application
shell: "/usr/src/power_consumption.sh"
args:
chdir: "/usr/src"
executable: "/bin/bash"
On Wed, Aug 21, 2024 at 4:57 PM Yogita Patil <[email protected]>
wrote:
> Ok thanks Todd.
>
> Also now I am getting a different error, after I cleaned up the yml to
> keep only 1 task -
>
> FAILED! => {
> "ansible_facts": {
> "discovered_interpreter_python": "/usr/bin/python3"
> },
> "changed": true,
> "cmd": [
> "stat",
> "./usr/src/power_consumption.sh"
> ],
> "delta": "0:00:00.002128",
> "end": "2024-08-21 16:53:50.376199",
> "invocation": {
> "module_args": {
> "_raw_params": "stat ./usr/src/power_consumption.sh",
> "_uses_shell": false,
> "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": 1,
> "start": "2024-08-21 16:53:50.374071",
> "stderr": "stat: cannot statx './usr/src/power_consumption.sh': No
> such file or directory",
> "stderr_lines": [
> "stat: cannot statx './usr/src/power_consumption.sh': No such file
> or directory"
> ],
> "stdout": "",
> "stdout_lines": []
> }
>
>
> Content of my yml are -
>
> - name: Shell script test
> hosts: all
> gather_facts: false
> tasks:
>
>
> - name: Run a script in another way
> ansible.builtin.command: stat ./usr/src/power_consumption.sh
> ignore_errors: true
>
> File does exist in the folder /usr/src on the controller node and the
> ansible host on which I am trying to execute the script both -
>
> [image: image.png]
>
>
> Contents of yml are -
>
>
> On Wed, Aug 21, 2024 at 4:46 PM Todd Lewis <[email protected]> wrote:
>
>> 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
>> <https://groups.google.com/d/msgid/ansible-project/9c4ea274-1bd6-4620-b974-b345b8ff1e5c%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/CAC15M2LfjQb%2BJ3UpTgj2JdJ0qc8XV4%3DFAo%2BTeq09a%3DZ6L6tepw%40mail.gmail.com.