我有一个名为的文件authorized_keys。我需要使用Ansible脚本删除特定行。
问题是当我尝试删除包含'+'字符的行时。Ansible无法删除此行。
例如authorized_keys文件是:
.....
abhi foo+bar saken
......(EOF)
Run Code Online (Sandbox Code Playgroud)
我想删除该abhi foo+bar saken行,但Ansible不会因为该+字符而删除此行。
我可以删除不包含+字符的行。
任务:
- name: Delete keys in sysadmin/.ssh/authoriezd_keys
lineinfile: dest=/home/{{name}}/.ssh/authorized_keys
state=absent
regexp='^{{key}}$'
Run Code Online (Sandbox Code Playgroud)
PS:我正在使用Ansible的lineinfile模块
问题可能是+在正则表达式中有含义。
您应该可以通过转义来解决此问题+。如果您不能从{{ key }}定义的地方执行此操作,则可以使用replaceJinja过滤器对其进行转义:
- name: Delete keys in sysadmin/.ssh/authoriezd_keys
lineinfile: dest=/home/{{name}}/.ssh/authorized_keys
state=absent
regexp='^{{ key | replace("+", "\+") }}$'
Run Code Online (Sandbox Code Playgroud)
如果{{ key }}包含其他在正则表达式中具有含义的字符,则可能会遇到更多问题。如果是这种情况,我认为安全的方法是创建自己的过滤器插件,您只需在其中返回通过的输入即可re.escape。
| 归档时间: |
|
| 查看次数: |
23075 次 |
| 最近记录: |