[Juniper SRX] オブジェクト名を変えたいときの「rename」と「replace」

見出し



SRXのコンフィグモードにある、似て非なる2つのコマンド「rename」と「replace」。
それぞれの特徴を確認してみましょう。

■rename

特定のオブジェクト名を変更することができます。
rename security zones security-zone trust address-book address ADDR_OLD to address ADDR_NEW


ただし、指定した階層のオブジェクトしか変更されないため、アドレスセットなどの中のオブジェクトには個別にrenameをする必要があります。
rename security zones security-zone trust address-book address-set ADDR_SET address ADDR_OLD to address ADDR_NEW


なお残念なことに、renameはポリシー内のオブジェクトに対して使用することができません。
ポリシー内のオブジェクトには、set/delete/insertなどを使用して変更しましょう。

また、変更するのは名前だけです。 実際のIPアドレスなどは変更されないので、注意が必要です。

■replace

正規表現のパターンマッチングにより、コンフィグ内の文字列を一括で置換する強力なコマンドです。
私の実運用では、こちらしか使用しません。
replace pattern "ADDR_OLD" with "ADDR_NEW"


これ1つで、オブジェクトの名前・中身・使用されているポリシーまで、全て変更することができます。
なお、load set terminal 中には使用できません。

ただし、単純な文字列のマッチングだけで全て置換してしまうため、無関係な箇所まで変えてしまわないように注意が必要です。
例えば「http」とだけ指定すると、「https」までヒットしてしまいます。
正規表現を駆使して、適切な箇所だけを置換するようにしましょう。

↓replaceコマンドにおける正規表現の説明はこちら。
Common Regular Expressions to Use with the replace Command