Shell 在Ansible中处理带有特殊字符的密码

Shell 在Ansible中处理带有特殊字符的密码,shell,ansible,special-characters,Shell,Ansible,Special Characters,我正在尝试运行一个带有ansible\u ssh\u pass选项的ansible playbook来连接到目标服务器 ansible-playbook test-playbook.yml -i hosts -u daniel --extra-vars "{"ansible_ssh_pass":"u5!vuL!<35Lf?<>n'x"}" 知道如何保存密码吗?我知道对于ansible vault,您可以在文件中指定密码,我假设在这种情况下也可以这样做,尽管我不是肯定的 ans

我正在尝试运行一个带有ansible\u ssh\u pass选项的ansible playbook来连接到目标服务器

ansible-playbook test-playbook.yml -i hosts -u daniel --extra-vars "{"ansible_ssh_pass":"u5!vuL!<35Lf?<>n'x"}"

知道如何保存密码吗?

我知道对于ansible vault,您可以在文件中指定密码,我假设在这种情况下也可以这样做,尽管我不是肯定的

ansible-playbook test-playbook.yml -i hosts -u daniel --extra-vars ansible_ssh_pass=/path/to/file.txt

如果删除单引号特殊字符,可以在其余字符周围使用单引号,它应该可以工作:

ansible-playbook test-playbook.yml -i hosts -u daniel -e ansible_ssh_pass='u5!vuL!<35Lf?<>nx'

ansible playbook test-playbook.yml-i hosts-u daniel-e ansible\u ssh\u pass='u5!vuL 可能有点晚,但具体问题的确切解决方案是:

ansible-playbook test-playbook.yml -i hosts -u daniel --extra-vars ansible_ssh_pass=$'"u5!vuL!<35Lf?<>n\'x"'

ansible playbook test-playbook.yml-i hosts-u daniel--extra vars ansible_ssh_pass=$'“u5!vuL!您是否尝试将其编码为JSON?使用JSON编码
'{“ansible_ssh_pass”时出现相同错误:”u5!vuL!如果您使用linux,您可以为您想要的用户设置和ssh密钥,并绕过密码。我们不允许在服务器之间共享密钥。我们的想法是使用user/pass进行连接。
ansible-playbook test-playbook.yml -i hosts -u daniel --extra-vars ansible_ssh_pass=$'"u5!vuL!<35Lf?<>n\'x"'