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/CAF8BbLbq8dtPciLk4_EuctwzjhMhsEaX%2BAts3pxE1q8%2BtU3X6Q%40mail.gmail.com.
