【发布时间】:2022-10-20 21:03:06
【问题描述】:
如何将此代码写入 ansible(yaml) 格式?
grep -i "^\s*PermitRootLogin\s* no\s*" /etc/ssh/sshd_config
if [ $? -eq "0" ]
then
echo "[ PASSED ] - Ensure SSH root login is disabled"
else
echo "[ FAILED ] - Ensure SSH root login is disabled"
fi
这就是我有的,我不知道什么时候写
- name: Check permitRootLogin
hosts: web
tasks:
- lineinfile:
path: /etc/ssh/sshd_config
state: absent
regexp: '^\s*PermitRootLogin\s* yes\s*'
check_mode: yes
register: permit
- name: Ensure SSH root
debug:
msg:
- "[ PASSED ] - Ensure SSH root login is disabled"
when: $regexp == 'PermitRootLogin yes'
【问题讨论】:
-
与您的问题无关:只想提一下,由于正则表达式中的错误,您发布的代码无论如何都不起作用。
-
你能指出错误吗
-
您是在告诉 grep 使用简单的正则表达式,但
\s只是一个要按字面匹配的 2 个字符的字符串。例如,如果你使用-P,你会告诉grep 使用PCRE 而不是简单的,\s将被解释为空白。顺便说一句,正则表达式末尾的星号是多余的,而 \s* 会总是最后匹配。因此,您可以简单地删除它。最后\s*相当于PCRE中的\s+,所以你的正则表达式可以简化为^\s*PermitRootLogin\s+no。 -
顺便说一句,如果您只对 grep 的成功感兴趣,并且不需要查看整个匹配的行,那么使用
-q也是有意义的。