Ansible shell命令-a with special characters“

时间:2017-08-10 10:04:58

标签: shell command ansible double-quotes

我正在使用ansible -a命令在我的库存上执行一些tastsk(df -h,检查文件夹......)。但现在,我需要在所有主机上创建一个用户。

我使用以下命令:

ansible -i [INVENTORYNAME].inventory allservers -m shell -a "sudo useradd -c "Name & lastname" [USERNAME]" >> [FILE].txt --extra-vars "ansible_sudo_pass=[MYPASS]" -b

但它不起作用。如何在命令中包含特殊字符?

谢谢。

1 个答案:

答案 0 :(得分:3)

您当前的命令嵌套了双引号。

您可以在外面使用单引号:

ansible -i inventory all -m shell -a 'sudo useradd -c "Name & lastname" [USERNAME]' >> [FILE].txt --extra-vars "ansible_sudo_pass=[MYPASS]" -b

或逃避内部的双引号:

ansible -i inventory all -m shell -a "sudo useradd -c \"Name & lastname\" [USERNAME]" >> [FILE].txt --extra-vars "ansible_sudo_pass=[MYPASS]" -b

第二个选项允许您从执行Ansible命令的机器(您的PC)中包含环境变量。

作为旁注,我强烈建议您使用user module 如果您使用sudo

-b也是多余的