Pan*_*son 15 python python-2.7 ansible ansible-2.x
在这里,我试图测试我的bash脚本,它提示四次.
#!/bin/bash
date >/opt/prompt.txt
read -p "enter one: " one
echo $one
echo $one >>/opt/prompt.txt
read -p "enter two: " two
echo $two
echo $two >>/opt/prompt.txt
read -p "enter three: " three
echo $three
echo $three >>/opt/prompt.txt
read -p "enter password: " password
echo $password
echo $password >>/opt/prompt.txt
Run Code Online (Sandbox Code Playgroud)
对于这个脚本我写下面的代码,它工作正常,
- 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
Run Code Online (Sandbox Code Playgroud)
但是,如果我为mysql_secure_installation命令做同样的事情,它对我不起作用,
- 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
Run Code Online (Sandbox Code Playgroud)
它的引用在这里:
PLAY [S1] **********************************************************************
TASK [setup] *******************************************************************
ok: [S1]
TASK [mysql_secure_installation Command Test] **********************************
fatal: [S1]: FAILED! => {"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
Run Code Online (Sandbox Code Playgroud)
我也试过空白mysql_secure_installation
而不是''
第一个答案,但它也没有用.我也访问过ansible expect doc但这里有非常简单的例子和解释.我也尝试正则表达式匹配多个不同的响应,但它也无法正常工作.请不要建议我使用ansible的mysql模块,因为这里我的目的是学习这个模块以备将来使用.
SiC*_*iCN 21
原因是这些问题被解释为regexp.因此,您必须在正则表达式中转义具有特殊含义的字符,例如 - ()[] \?*.et cetara.
因此:
'Enter current password for root (enter for none):'
Run Code Online (Sandbox Code Playgroud)
应该是:
'Enter current password for root \(enter for none\):'
Run Code Online (Sandbox Code Playgroud)
祝好运!
归档时间: |
|
查看次数: |
24006 次 |
最近记录: |