繁体   English   中英

如何转义 linux shell 的随机字符串以使用 Z640C8A5376AA12FA15CF0213 更新 mysql 数据集条目

[英]How escape random string for linux shell to update mysql datase entry using ansible?

对于特定情况,我需要echo显由 ansible 的 function password_hash返回的随机字符串,其中包含多个随机$符号(加密方法bcrypt )。 然后将回显的字符串通过管道传送到下一个命令。

理想情况下,我会转义整个字符串。 如果那不可能,我想转义所有$符号。 这怎么可能? 如果有一个自动转义变量的 ansible 本机命令,那也很好。

如果需要,完成任务

- name: Update Admin password
  shell: "echo \"update users set passwd={{ zabbix_conf.admin_password|password_hash('bcrypt') }} where username='Admin'\" | mysql --user={{ zabbix_conf.db_user}} --password={{ zabbix_conf.db_password }} zabbix"

当前无法按预期工作,因为$符号会影响 echo 为空。

Ansible 已经有一个用于执行 mysql 查询的内置命令,称为mysql_query 因此,可以简单地做:

- name: Update Admin password
      mysql_query:
        login_db: "{{ zabbix_conf.db }}"
        login_user: "{{ zabbix_conf.db_user}}"
        login_password: "{{ zabbix_conf.db_password }}"
        query: "update users set passwd='{{ zabbix_conf.admin_password|password_hash('bcrypt') }}' where username='Admin'"

这样你就不需要逃避任何东西,它看起来也更干净。

如果有人想重现这个: Ansible 需要将passlib安装到password_hash bycrypt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM