title: How to use ansible 'expect' module for multiple different responses?
body: <p>Here I am trying to test my bash script where it is prompting four times.</p>
  
  <pre><code>#!/bin/bash
  date &gt;/opt/prompt.txt
  read -p "enter one: " one
  echo $one
  echo $one &gt;&gt;/opt/prompt.txt
  read -p "enter two: " two
  echo $two
  echo $two &gt;&gt;/opt/prompt.txt
  read -p "enter three: " three
  echo $three
  echo $three &gt;&gt;/opt/prompt.txt
  read -p "enter password: " password
  echo $password
  echo $password &gt;&gt;/opt/prompt.txt
  </code></pre>
  
  <p>for this script I wrote the code below, and it is working fine</p>
  
  <pre><code>- hosts: "{{ hosts }}"
    tasks:
    - name: Test Script
      expect:
        command: sc.sh
        responses:
          enter one: 'one'
          enter two: 'two'
          enter three: 'three'
          enter password: 'pass'
        echo: yes
  </code></pre>
  
  <p>But if I am doing the same for <code>mysql_secure_installation</code> command it not working</p>
  
  <pre><code>- hosts: "{{ hosts }}"
    tasks:
    - name: mysql_secure_installation Command Test
      expect:
        command: mysql_secure_installation
        responses:
          'Enter current password for root (enter for none):': "\n"
          'Set root password? [Y/n]:': 'y'
          'New password:': '123456'
          'Re-enter new password:': '123456'
          'Remove anonymous users? [Y/n]:': 'y'
          'Disallow root login remotely? [Y/n]:': 'y'
          'Remove test database and access to it? [Y/n]:': 'y'
          'Reload privilege tables now? [Y/n]:': 'y'
  
        echo: yes
  </code></pre>
  
  <p>and its trackback is here:</p>
  
  <pre><code>PLAY [S1] **********************************************************************
  
  TASK [setup] *******************************************************************
  ok: [S1]
  
  TASK [mysql_secure_installation Command Test] **********************************
  fatal: [S1]: FAILED! =&gt; {"changed": true, "cmd": "mysql_secure_installation", "delta": "0:00:30.139266", "end": "2016-07-15 15:36:32.549415", "failed": true, "rc": 1, "start": "2016-07-15 15:36:02.410149", "stdout": "\r\n\r\n\r\n\r\nNOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL\r\n      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!\r\n\r\n\r\nIn order to log into MySQL to secure it, we'll need the current\r\npassword for the root user.  If you've just installed MySQL, and\r\nyou haven't set the root password yet, the password will be blank,\r\nso you should just press enter here.\r\n\r\nEnter current password for root (enter for none): ", "stdout_lines": ["", "", "", "", "NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL", "      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!", "", "", "In order to log into MySQL to secure it, we'll need the current", "password for the root user.  If you've just installed MySQL, and", "you haven't set the root password yet, the password will be blank,", "so you should just press enter here.", "", "Enter current password for root (enter for none): "]}
  
  NO MORE HOSTS LEFT *************************************************************
      to retry, use: --limit @/home/jackson/AnsibleWorkSpace/AnsibleTest/example1.retry
  
  PLAY RECAP *********************************************************************
  S1                         : ok=1    changed=0    unreachable=0    failed=1  
  </code></pre>
  
  <p>I have also tried blank <code>''</code> instead of <code>"\n"</code> for the first answer but it is not working either. I also visited Ansible <a href="http://docs.ansible.com/ansible/expect_module.html" rel="noreferrer"><code>expect</code></a> doc but they show only very simple example and explanation. I am also trying regex match for multiple different responses but it is also not working.<br>
  Please do not recommend me to use mysql module of Ansible, because here my purpose is to learn this module for future use.</p>