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/b312346aeda99d9f2e4848bb6d8bad54%40olstad.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to