Thanks Kai. Your comment "Expect is just looking a a stream of bytes" gave
me the idea to just look for a "string of bytes" that's present in each
prompt. The following now works.
- name: Test expect
expect:
timeout: 5
echo: yes
command: keytool -genkey -alias tomcat -keyalg RSA -sigalg
SHA1withRSA -keysize 2048 -keystore keystore.jks
responses:
"Enter keystore password": "{{ keystore_pw }}"
"Re-enter new password": "{{ keystore_pw }}"
"last name": "{{ cname }}"
"organizational unit": "EngIT"
"organization": "{{ company }}"
"Locality": "RTP"
"Province" : "NC"
"country": "US"
\[no\]: "yes"
"Enter key password" : "{{ keystore_pw }}"
Interestingly enough, the following gives a syntax error
"\[no\]"
but corrected with this
\[no\]
On Monday, May 14, 2018 at 2:31:45 PM UTC-4, ZillaYT wrote:
>
> This helped some, but brought up the next issue.
>
> The keytool command has multiple multi-lined prompts, with "[Unknown]" as
> the second line, so if I do this
>
> tasks:
> - name: Test expect
> expect:
> timeout: 5
> echo: yes
> command: keytool -genkey -alias tomcat -keyalg RSA -sigalg
> SHA1withRSA -keysize 2048 -keystore keystore.jks
> responses:
> "Enter keystore password": "changeit"
> "Re-enter new password": "changeit"
> \[Unknown\]: "{{ cname }}"
> \[Unknown\]: "EngIT"
> \[Unknown\]: "{{ company }}"
> \[Unknown\]: "RTP"
> \[Unknown\]: "NC"
> \[Unknown\]: "US"
>
>
> I now get
>
> [WARNING]: While constructing a mapping from /home/scscm_builder/copy-
> expect.yml, line 20, column 9, found a duplicate dict key (\[Unknown\]).
> Using
> last defined value only.
>
> I need to somehow include part of each prompt in the regex?
>
>
> On Monday, May 14, 2018 at 1:45:43 PM UTC-4, Kai Stian Olstad wrote:
>>
>> On 14.05.2018 19:02, ZillaYT wrote:
>> > Per https://groups.google.com/forum/#!topic/ansible-project/AXEPsAqxmNE
>> > I'm
>> > using the expect module, and have it working when the prompt is single
>> > line. How do I make it work when the prompt is multi-line? I'm not
>> > talking
>> > about multi-prompts.
>> >
>> > Let me explain.
>> >
>> > ansible v2.4.0.0
>> >
>> > I'm trying to automate JKS (Java Keystore) and CSR file generation via
>> > the
>> > keytool command (the java_cert module doesn't do this, IIUC).The
>> > command,
>> > and the first 3 prompts are the following. *Note that the third prompt
>> > is
>> > multi-lined.*
>> >
>> > $ keytool -genkey -alias tomcat -keyalg RSA -sigalg SHA1withRSA
>> > -keysize
>> > 2048 -keystore keystore.jks
>> > Enter keystore password:
>> > Re-enter new password:
>> > What is your first and last name?
>> > [Unknown]:
>> >
>> > I have
>> >
>> > ---
>> > - hosts: localhost
>> > connection: local
>> >
>> > tasks:
>> > - name: Test expect
>> > expect:
>> > echo: yes
>> > command: keytool -genkey -alias tomcat -keyalg RSA -sigalg
>> > SHA1withRSA -keysize 2048 -keystore keystore.jks
>> > responses:
>> > "Enter keystore password: " : "changeit"
>> > "Re-enter new password: " : "changeit"
>> > "What is your first and last name?\n [Unknown]: " :
>> > "myserver.domain.com"
>>
>> Expect is just looking a a stream of bytes, when it sees a string it
>> will "type" the response.
>> So in this case you only need to check for the string [Unknown]:
>> Since [] is special character in regex you need to escape them
>>
>> "\[Unknown\]: ": "myserver.domain.com"
>>
>>
>> You could also leave out the quotes, the colon and the space, this will
>> also work
>>
>> \[Unknown\]: myserver.domain.com
>>
>> --
>> Kai Stian Olstad
>>
>
--
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 post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/3217d654-d92c-4cb9-a9d6-a40e762e2d70%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.