我需要验证PermitRootLogin
参数是否等于“ no”,例如:
PermitRootLogin no
但是有时在这些单词之间有多个空格。因此,我使用了正则表达式,但显然我做错了。这行似乎很糟糕:
when: check_config.stdout.find('PermitRootLogin\s+no') != -1
有什么解决方法吗?
- hosts: redhat
tasks:
- name: check file
shell: cat /etc/ssh/sshd_config
register: check_config
- name: compare string
when: check_config.stdout.find('PermitRootLogin\s+no') != -1
debug: msg="this server is ok"
答案 0 :(得分:1)
Q:我需要验证PermitRootLogin参数是否等于“否”
A:使用lookup并 select 来确定服务器是否正常。例如
- debug:
msg: 'this server is ok'
when: lookup('file', '/etc/ssh/sshd_config').splitlines()|
select('match', '^PermitRootLogin\s+no$' )|list
如果要在配置中放置/替换行,请使用lineinfile。例如
- lineinfile:
path: /etc/ssh/sshd_config
regexp: '^PermitRootLogin(.*)$'
line: 'PermitRootLogin no'
(未经测试)