Python Ansible:替换文件中的word
我正在制作一本Ansible剧本来设置CSF。 除了最后一部分,我什么都做了 我想在Python Ansible:替换文件中的word,python,ansible,Python,Ansible,我正在制作一本Ansible剧本来设置CSF。 除了最后一部分,我什么都做了 我想在/etc/csf/csf.conf文件中禁用端口22。 因此TCP_OUT=“20,21,22,25,53,8011134435879995”需要22删除。 我不想替换整行,因为有些行是不同的,例如,有些已打开端口2087或2222。 有什么办法我只能在22上过滤吗 提前谢谢你 代码工作证明 >>> TCP_OUT = '20,21,22,25,53,80,110,113,443,587,993
/etc/csf/csf.conf
文件中禁用端口22。
因此TCP_OUT=“20,21,22,25,53,8011134435879995”
需要22
删除。
我不想替换整行,因为有些行是不同的,例如,有些已打开端口2087
或2222
。
有什么办法我只能在22
上过滤吗
提前谢谢你 代码工作证明
>>> 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'
代码工作证明
>>> 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'
您有几个选择:
- 带sed的模块
- 模块
- 模块
TCP\u OUT=
开头的行,并将该行中的、22、
替换为、
tasks:
- name: Strip port 22
replace:
dest: /etc/csf/csf.conf
regexp: '^TCP_OUT\s*=\s*(.*),22,(.*)$'
replace: 'TCP_OUT = \1,\2'
- \s*-匹配零个或多个空格(空格、制表符等)
- \1-第一组(.*)中匹配的内容
- \2-第二组(.*)中匹配的任何内容
- 带sed的模块
- 模块
- 模块
TCP\u OUT=
开头的行,并将该行中的、22、
替换为、
tasks:
- name: Strip port 22
replace:
dest: /etc/csf/csf.conf
regexp: '^TCP_OUT\s*=\s*(.*),22,(.*)$'
replace: 'TCP_OUT = \1,\2'
- \s*-匹配零个或多个空格(空格、制表符等)
- \1-第一组(.*)中匹配的内容
- \2-第二组(.*)中匹配的任何内容
- 您可以使用。制作一份
/etc/csf/csf.conf
文件的副本,并用ansible变量替换TCP\u OUT行:
TCP_OUT = {{ port_list }}
然后在变量中提前设置列表,并在文件中设置所需的端口
vars:
port_list = "20,21,25,53,80,110,113,443,587,993,995"
你可以用。制作一份/etc/csf/csf.conf
文件的副本,并用ansible变量替换TCP\u OUT行:
TCP_OUT = {{ port_list }}
然后在变量中提前设置列表,并在文件中设置所需的端口
vars:
port_list = "20,21,25,53,80,110,113,443,587,993,995"
默认配置为
“20,21,22,25,53,80110113443587993995”
,但cPanel服务器中包含2087。按照“您的方式”进行操作意味着我必须在所有服务器上打开端口2222和2087,非directadmin和cPanel服务器也一样?哦,我明白了,我想我可以添加一些文件读取代码&还可以在包含字符串“TCP_OUT=”的行上进行替换检查。听起来不错?默认配置是“20,21,22,25,53,80110113443587993995”
,但是cPanel服务器中应该有2087。按照“您的方式”进行操作意味着我必须在所有服务器上打开端口2222和2087,非directadmin和cPanel服务器也一样?哦,我明白了,我想我可以添加一些文件读取代码&还可以在包含字符串“TCP_OUT=”的行上进行替换检查。听起来不错?啊,太好了。如果不是太多的话,你介意把它分解一下吗?我知道\s
是一条白线,^
开始和$
结束。。。究竟是什么确保它两者都匹配,而不是两者都匹配?=
?啊,太完美了。如果不是太多的话,你介意把它分解一下吗?我知道\s
是一条白线,^
开始和$
结束。。。究竟是什么确保它两者都匹配,而不是两者都匹配?=
?如果所有服务器都是相同的,那就太完美了,但正如前面提到的,我也有cPanel和DirectAdmin服务器。。有几个不同的剧本没有多大意义?如果所有的服务器都是一样的,那就太完美了,但正如前面提到的,我也有cPanel和DirectAdmin服务器。。有几个不同的剧本没有多大意义?