FortiGateのCLIには、出力結果を絞り込むためのgrepコマンドが用意されています。
UNIX/Linuxのgrepコマンドと似たような感覚で使用できますが、FortiOS特有の制限や仕様もあります。
本記事では、GREPの正確な使い方から応用例、注意点までを網羅的に解説します。
FortiGate CLIにおいて、任意のコマンドの出力に対してgrepでフィルタリングする基本構文は以下の通りです。
<command> | grep [オプション] "検索文字列"
show system interface | grep port
これは、インターフェース設定の中から「port」を含む行だけを表示します。
show system interface | grep port1
show firewall policy | grep "policyid 10"
execute log display | grep fail
FortiOSでサポートされているgrepの主なオプションは以下の通りです。
| オプション | 説明 |
|---|---|
-i |
大文字・小文字を無視して検索(ignore case) |
-v |
指定した文字列を含まない行のみ表示(否定) |
-c |
一致した行数をカウントして表示 |
-n |
一致した行の行番号を表示 |
-e |
複数の検索語をOR条件で指定可能(複数回使用可) |
注意:UNIXの
grep -f(ファイル指定)や-w(単語一致)はFortiOS CLIでは非対応です。
grepはあくまで単純なキーワード一致FortiOSのgrepは正規表現(例:^, $, .*, \d+など)には対応していません。
単純な文字列一致のみです。
diagnose debug enable などの実行コマンドにパイプは使えない以下のような使い方は誤りです。
diagnose debug enable | grep negotiation ← NG
代わりに、以下のような手順が推奨されます。
diagnose debug application ike -1
diagnose debug console timestamp enable
diagnose debug enable
その後にログが流れるので、手動で確認 or ログバッファを使って再度grepで絞り込む方法が現実的です。
diagnose debug application ike -1
diagnose debug enable
出力されたログの中から手動で該当するキーワードを探す、または一時ログに出力して再度確認する。
execute log display | grep 192.168.1.10
show | grep snmp
show firewall policy | grep port1 | grep allow
「port1を含み、かつallowを含む行」を抽出可能。
show firewall policy | grep -v "deny"
「denyを含まない行」のみを抽出。
| ポイント | 内容 |
|---|---|
| 基本はパイプ(` | grep`)による文字列一致検索 |
| 複雑な正規表現には非対応 | 単純なキーワード一致を想定して使用する |
diagnose debugなど実行系コマンドにはパイプ不可 |
ログ出力後に別途フィルタリングする運用が必要 |
| 複数オプションを組み合わせると効率的 | -v, -i, -e などを併用すると柔軟性アップ |
以上、FortiGateのGREPについてでした。
最後までお読みいただき、ありがとうございました。