Thanks.
I tried what you suggested but I get:
'responses' is of type <class 'list'> and we were unable to convert to dict
But this seems to work:
responses:
Username: sq
Password: "SoLong>"
BASE\>:
- "w ##Class(websys).test()"
- "H"
On Thursday, December 1, 2022 at 8:26:08 PM UTC+11 [email protected] wrote:
> Hi
>
> It now partly works because you made the items of a single dict key into a
> list and by doing so also quoted the value with '#' in it.
> But what I meant is to have the responses itself be a list, so you can
> have duplicates. I think this would look like:
>
> responses:
> - Username: sq
> - Password: "SoLong>"
> - BASE\>: "w ##Class(websys).test()"
> - BASE\>: "H"
> - BASE1>: "foo"
> - BASE1>: "bar"
> - BASE1>: "bz"
> - BASE2>: "fog"
> - BASE2>: "fbzhy33"
> - BASE1>: "bar"
>
>
> etc
>
>
>
> On Wed, 30 Nov 2022 at 21:55, phillip.from.oz <[email protected]>
> wrote:
>
>> Thanks. That did the trick.
>>
>> I changed
>> BASE\>: w ##Class(websys).test()
>> BASE\>: H
>> to
>> BASE\>: ["w ##Class(websys.PatchHistory).test()","H"]
>>
>> However, how do I code the list if I have this set of prompts:
>> BASE1>
>> BASE1>
>> BASE1>
>> BASE2>
>> BASE2>
>> BASE1>
>> BASE1>
>> On Wednesday, November 30, 2022 at 4:02:42 PM UTC+11 [email protected]
>> wrote:
>>
>>> Your responses is now a dict which cannot have the same key more than
>>> once. So the second BASE question isn't going to work.
>>> Try turning it into a list.
>>> See
>>> https://docs.ansible.com/ansible/latest/collections/ansible/builtin/expect_module.html#examples
>>>
>>>
>>>
>>>
>>> On Wed, 30 Nov 2022 at 02:03, phillip.from.oz <[email protected]>
>>> wrote:
>>>
>>>> Hi,
>>>> I want to run a program on a remote server where after login, the
>>>> program will ask for more input using the same prompt.
>>>>
>>>> This is the basic flow:
>>>> Read Username
>>>> Read Password
>>>> Read commands <- these get echoed back
>>>> until 'h' or 'H' is entered
>>>>
>>>> This is a sample run of the program
>>>> BASE:/home# python3 converse2.py
>>>> Welcome to BASE
>>>> My configuration is up to date
>>>> Print settings are normal
>>>> Username: sq
>>>> Password: SoLong>
>>>> BASE>w abc
>>>> w abc
>>>> BASE>h
>>>>
>>>> I run the same program using Ansible Expect with this playbook:
>>>> ---
>>>> - name: Test a conversation
>>>> hosts: BASE
>>>> remote_user: root
>>>> gather_facts: false
>>>> tasks:
>>>> - name: Copy script converse2.py
>>>> copy: src=/home/converse2.py
>>>> dest=/home/converse2.py
>>>> remote_src=no
>>>> mode=preserve
>>>> - name: Run test session
>>>> expect:
>>>> echo: yes
>>>> chdir: /tmp
>>>> command: python3 /home/converse2.py
>>>> timeout: "300"
>>>> responses:
>>>> Username: sq
>>>> Password: "SoLong>"
>>>> BASE\>: w ##Class(websys).test()
>>>> BASE\>: H
>>>> register: command_output
>>>> - debug:
>>>> msg: "{{ command_output.stdout.split('\n') }}"
>>>>
>>>> However Ansible Expect is not sending 'w ##Class(websys).test()' to the
>>>> program
>>>>
>>>> This is the run:
>>>> ansible-playbook /home/ansible_playbooks/test-converse2.yml
>>>> [WARNING]: While constructing a mapping from
>>>> /home/ansible_playbooks/test-converse2.yml, line 20, column 9, found a
>>>> duplicate dict key (BASE\>). Using last defined value only.
>>>>
>>>> PLAY [Test a conversation]
>>>> ****************************************************************************************************************************************************
>>>>
>>>> TASK [Copy script converse2.py]
>>>> ***********************************************************************************************************************************************
>>>> ok: [TRAK-BASE01]
>>>>
>>>> TASK [Run test session]
>>>> ********************************************************************************************************************************************************
>>>> changed: [TRAK-BASE01]
>>>>
>>>> TASK [debug]
>>>> ********************************************************************************************************************************************************************
>>>> ok: [TRAK-BASE01] => {
>>>> "msg": [
>>>> "\r",
>>>> "Welcome to BASE\r",
>>>> " My configuration is up to date\r",
>>>> " Print settings are normal\r",
>>>> "\r",
>>>> "\r",
>>>> "Username: sq\r",
>>>> "Password: SoLong>\r",
>>>> "BASE>H"
>>>> ]
>>>> }
>>>>
>>>> PLAY RECAP
>>>> ************************************************************************************************************************************************************************
>>>> TRAK-BASE01 : ok=3 changed=1 unreachable=0
>>>> failed=0 skipped=0 rescued=0 ignored=0
>>>>
>>>> How do I fix this?
>>>>
>>>> --
>>>> 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/38895202-0733-4df4-8d11-1c661128f3f7n%40googlegroups.com
>>>>
>>>> <https://groups.google.com/d/msgid/ansible-project/38895202-0733-4df4-8d11-1c661128f3f7n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> --
>>> Sent from Gmail Mobile
>>>
>> --
>> 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/62b8e9c3-cae8-4e95-83f3-fcaa8f95aed1n%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/ansible-project/62b8e9c3-cae8-4e95-83f3-fcaa8f95aed1n%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/e65fc125-d152-4ab6-972c-223c8afdd9bfn%40googlegroups.com.