我正在制作一个Ansible手册来设置CSF。 除了最后一部分,我已经完成了所有工作。
我想在/etc/csf/csf.conf
文件中禁用端口22。
因此TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995"
需要移除22
。
我不想替换整行,因为有些行不同,有些行打开了端口2087
,或者2222
。
有什么办法我只能过滤22
吗?
提前谢谢!!
答案 0 :(得分:3)
您有几种选择:
此解决方案使用replace模块查找以TCP_OUT =
开头的行,并将,22,
替换为行中的,
。
tasks:
- name: Strip port 22
replace:
dest: /etc/csf/csf.conf
regexp: '^TCP_OUT\s*=\s*(.*),22,(.*)$'
replace: 'TCP_OUT = \1,\2'
答案 1 :(得分:1)
代码工作证明
>>> TCP_OUT = '20,21,22,25,53,80,110,113,443,587,993,995,2087,2222,22'
>>> print(','.join([port for port in TCP_OUT.split(',') if port != '22']))
'20,21,25,53,80,110,113,443,587,993,995,2087,2222'
答案 2 :(得分:0)
您可以使用template。制作/etc/csf/csf.conf
文件的副本,并将TCP_OUT行替换为ansible变量:
TCP_OUT = {{ port_list }}
然后在变量中提前设置列表,其中包含文件中所需的端口。
vars:
port_list = "20,21,25,53,80,110,113,443,587,993,995"