我有一个名为authorized_keys
的文件。我需要使用Ansible脚本删除特定行。
问题是当我尝试删除包含' +'字符。 Ansible无法删除此行。
例如authorized_keys
文件是:
.....
abhi foo+bar saken
......(EOF)
我想删除abhi foo+bar saken
行,但由于+
字符,Ansible未删除此行。
我可以删除不包含+
字符的行。
任务:
- name: Delete keys in sysadmin/.ssh/authoriezd_keys
lineinfile: dest=/home/{{name}}/.ssh/authorized_keys
state=absent
regexp='^{{key}}$'
PS:我正在使用Ansible的lineinfile
模块
答案 0 :(得分:4)
问题可能是+
在正则表达式中有意义。
您应该可以通过转发+
来修复它。如果您无法从定义{{ key }}
的来源执行此操作,则可以使用replace
Jinja过滤器将其转义:
- name: Delete keys in sysadmin/.ssh/authoriezd_keys
lineinfile: dest=/home/{{name}}/.ssh/authorized_keys
state=absent
regexp='^{{ key | replace("+", "\+") }}$'
如果{{ key }}
包含其他在正则表达式中有意义的字符,则可能会遇到更多问题。如果是这种情况,我认为安全的方法是创建自己的filter plugin,只需返回通过re.escape
传递的输入。