サーバーのさまざまな側面を構成するための 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に属している場合は申し訳ありませんが、サーバー構成自体の複雑さではなくスクリプトであるため、ここで考えた方が適切かもしれません.