コマンドを解析して作成する必要があるタイプのルールベースを持つ複数の CSV があり、複数の問題が発生しています。
始める前に、レイアウト方法と外観の例を次に示します。
$1 = Rule number
$3 = Source
$4 = Destination
$5 = Service
$6 = Action
$7 = Track
$10 = Comments
.
Security Policy: Blahblahblah,,,,,,,,,
12,,host_A,net-B,https,drop,Log,Any,Any,comments
13,,host_A,net-B,smtp,drop,Log,Any,Any,comments
14,,host_A,net-B,http,accept,Log,Any,Any,comments
,,net-C,,,,,,,
,,net-D,,,,,,,
15,,host_A,net-B,http,accept,Log,Any,Any,comments
,,host_B,net-C,service_X,,,,,
,,host_C,net-D,service_y,,,,,
,,host_D,,,,,,,
,,host_E,,,,,,,
問題 #1: ループ内で列 1 (ルール番号) を調整する必要があります。正しい数に等しくなるように、そこから変数を減算する必要があります (シフトする必要があります)。たとえば、最初のルール #12 は、ループ内で #1 になる必要があります。
これを使用して、連続する行ごとに元の行から減算する必要がある変数を作成します (最初の行から 1 を減算します)。
`awk -F, 'NR==2 {print $1 -1 }'
問題 #2: Rule# のすべてのインスタンスに対してこのループを繰り返す必要があります。IE: 各ルールは複数のソース/宛先/サービスを持つことができ、新しいオブジェクトを正しいルールにリンクできる必要があります。
$1 のエラー チェックも実行する必要があります。これは、「disabled」などで始まるスキップする必要のあるフィールド/ルールがいくつかあるためです。これはトリックを行うようです:
awk -F, '$1 ~ "^[0-9]*$" {print $1}
全体として、最終的な出力は次のようになります。
(すべて echo'd/awk print'd など):
if new rule # is found in $1:
create rule security_rule
create action $rule_number $action
create comment $rule_number $comment
create source $rule_number $source <--- iterate as many times as required
create destination $rule_number $destination <--- iterate as many times as required
create service $rule_number $service <--- iterate as many times as required
create track $rule_number $track
等...
あなたができるどんな助け/提案もいただければ幸いです。
ありがとうございました、
編集: より良い例 (ルール 1 = CSV のルール 12 - これらはまだ大まかな印刷ステートメントであり、後で正しい印刷値を入力できます):
if new rule # is found in $1:
create rule security_rule
create action rule 1 drop
create comment rule 1 "This is a comment"
create source rule 1 host_A
create destination rule 1 net-B
create service rule 1 https
create track rule 1 Log
複数のソース/宛先/サービスを持つものは、次のように「create source rule x」行を追加するだけです:
if new rule # is found in $1:
create rule security_rule
create action rule 3 accept
create comment rule 3 "This is a comment"
create source rule 3 host_A
create source rule 3 net-C
create source rule 3 net-D
create destination rule 3 net-B
create service rule 3 http
create track rule 3 Log