Ansible shell 命令 -a 带有特殊字符 "
Ansible shell command -a with special characters "
我正在使用 ansible -a 命令在我的清单上执行一些任务(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
但它不起作用。如何在命令中包含特殊字符?
谢谢。
您当前的命令包含嵌套双引号。
你可以在外面使用单引号:
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。
如果使用 -b
,sudo
也是多余的
我正在使用 ansible -a 命令在我的清单上执行一些任务(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
但它不起作用。如何在命令中包含特殊字符?
谢谢。
您当前的命令包含嵌套双引号。
你可以在外面使用单引号:
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。
如果使用 -b
sudo
也是多余的