我正在製作一個Ansible劇本來設置CSF。 除了最後一部分,我已經完成了一切。Ansible:替換文件中的單詞
我想在/etc/csf/csf.conf
文件中禁用端口22。 因此TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995"
需要22
刪除。 我不想替換整條生產線,因爲一些生產線不同,有些生產商開放了端口2087
,或者以2222
爲例。 有沒有什麼辦法可以在22
上過濾?
預先感謝您!
我正在製作一個Ansible劇本來設置CSF。 除了最後一部分,我已經完成了一切。Ansible:替換文件中的單詞
我想在/etc/csf/csf.conf
文件中禁用端口22。 因此TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995"
需要22
刪除。 我不想替換整條生產線,因爲一些生產線不同,有些生產商開放了端口2087
,或者以2222
爲例。 有沒有什麼辦法可以在22
上過濾?
預先感謝您!
您有幾種選擇:
此解決方案使用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'
代碼工作證明
>>> 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'
啊完美。你是否介意,如果沒有太多要求將其分解? 我知道'\ s'是一個白線,'''開始和'$'結束... 究竟是什麼確保它匹配在兩個,而不是? '='? – Florius
@Florius看到我的更新回答。 – helloV