我正在尝试编写一个 bash 脚本来配置服务器的各个方面。这里的上下文是用另一个值替换 conf 文件(ini 格式)中的变量值。
上下文是
[ssh-iptables]
enabled = false
我只需要将 false 更改为 true。
通常我会用一些简单的sed
sed -i 's/^enabled = false/enabled = true/g' /etc/fail2ban/jail.conf
但enabled = false
存在于多个地方。
我试过使用awk
没有成功
awk -F ":| " -v v1="true" -v opt="enabled" '$1 == "[ssh-iptables]" && !f {f=1}f && $1 == opt{sub("=.*","= "v1);f=0}1' /etc/fail2ban/jail.conf
以上内容来自该论坛主题,但我对如何在脚本中使用它以使其工作并没有足够的了解。它似乎所做的就是相当于cat /etc/fail2ban/jail.conf
我发现了一些其他脚本,它们相当长,这并不理想,因为这会发生在大量的 ini 文件中,所以我希望有人可以帮助我更正上面的代码或为我指明正确的方向。
抱歉,如果这属于 ServerFault,但由于它是脚本而不是服务器配置本身的复杂性,我认为这里可能更合适。