fortigate構成ファイル内でアドレス定義が使用されているかどうかを確認します。
構成ファイルからアドレスを含むセクションを抽出しました。このセクションの行は次のとおりです。
edit "address name"
set associated-interface "someinterface"
set subnet 1.1.1.1 0.0.0.0
次に、アドレス名を使用して次の手順を実行して、ルールまたはアドレスグループがそれを使用していることを確認したいと思います。
IFS='
'
for address in $(grep edit addresses.txt | cut -c10- | sed 's/"//'g); do echo $address; grep -n $address fortigate.conf; done
私がインポートしたIFSセクションここ。
これはアドレス定義名のリストを返しますが、grepコマンドは何も見つかりません。少なくとも自分で見つけなければならないので変です。そうですか?
答え1
IFSがなければ、より簡単になります。
grep edit addresses.txt | cut -d\" -f2 | while read addr
do
echo "addr=[$addr]"
grep -n "$addr" fortigate.conf
done
答え2
あなたのcut
命令はあまりにも過激です。単独で実行すると、次の効果が表示されます。
$ grep edit yyyy
edit "address name"
$ grep edit yyyy |cut -c10-
ress name"
以下を調整してくださいcut
。
$ grep edit yyyy |cut -c6-
"address name"
答え3
アドレス名のスペースが問題の原因である可能性があります。努力する:
IFS='
'
for address in $(grep edit addresses.txt | cut -c10- | sed 's/"//'g); do echo $address; grep -n "$address" fortigate.conf; done
注:周囲に引用符があります。$住所grepするとき