Skip to content

TextFSM template syntax#

TextFSMテンプレートは2つの部分で構成されています。

  • 値の定義(または変数の定義)-これらの変数は、テーブルビューに表示される列を記述します
  • 状態の定義
tracerouteコマンドの例:
Value ID (\d+)
Value Hop (\d+(\.\d+){3})

Start
   ^  ${ID} ${Hop} -> Record

値の定義#

値セクションでは、値を定義する。 このセクションには空の文字列を含めない点に注意。TextFSMの場合、空の文字列は値定義セクションの終わりを意味する。

値の説明の形式:

Value [option[,option...]] name regex

値の説明の構文(以下の各オプションについて、例を検討します):

  • Value: 値が作成されていることを示すキーワード。指定する必要があります
  • option: 変数の操作方法を定義するオプション。複数のオプションを指定する場合は、スペースを入れずにコンマで区切る必要があります。これらのオプションがサポートされています。
  • Filldown: 以前に正規表現と一致した値で、次の処理行まで記憶されます(明示的にクリアされていないか、再度一致していない場合)。これは、この列が存在しない場合、正規表現に一致する最後の列の値が格納され、次の文字列で使用されることを意味します。
  • Key : このフィールドに一意の文字列識別子が含まれていることを確認します
  • Required : 処理される文字列は、この値が存在する場合にのみ書き込まれます。
  • List--value : はリストであり、正規表現と一致するたびにリストにアイテムが追加されます。デフォルトでは、次の各一致が前の一致を上書きします。
  • Fillup : フィルダウンとして機能しますが、一致するものが見つかるまで空の値を埋めます。必須とは互換性がありません。
  • name : 列名として使用される値の名前。予約名は値名として使用しないでください。
  • regex : 値を説明する正規表現。正規表現は中括弧で囲む必要があります。

State の定義#

値を定義した後、状態を定義する必要がある。

  • 各状態定義は、空の行(少なくとも1つ)で区切る必要があります
  • 最初の行はstate の名前
  • 次に、ルールを説明する行に従います。ルールは、1つまたは2つのスペースとキャレット記号で始まる必要があります

  • Start: 必ず指定する必要がある項目。

  • End: 着信文字列の処理を完了し、状態を実行しない
  • EOF: 処理がファイルの終わりに達したときに常に実行される暗黙の状態。終了する前に現在の文字列を書き留めるには以下のように記述。
    EOF
      ^.* -> Record
    

State 規則#

各状態は、1つ以上のルールで構成されます。 ルール(正規表現)が文字列と一致する場合、ルール内のアクションが実行され、次の文字列に対して、状態の最初からプロセスが繰り返されます。

  • 構文: ^regex [-> action]
  • 各ルールは、2つのスペースとキャレット記号で始まる必要があります^。キャレット記号 ^は行の始まりを意味し、常に明確に示す必要があります
  • regex-変数を使用できる正規表現
    • $ValueName変数を指定するには、または${ValueName}(推奨形式)のような構文を使用できます
    • 原則として、変数は正規表現に置き換えられます
    • 行末を明示的に指定する場合は、$$

Line Actions#

Next-行を処理し、次の行を読んで、最初からチェックを開始します。特に指定がない限り、このアクションはデフォルトで使用されます Continue-値が割り当てられている間、一致がなかったかのようにルールを処理し続けます

アクションの記録#

Record Action-ラインアクションの後に指定できるオプションのアクション。それらはドットで区切る必要があります。アクションの種類:

NoRecord- 何もしない。これは、他に指定されていない場合のデフォルトのアクションです

Record-フィルダウンオプションのある変数を除くすべての変数がリセットされます。

Clear-フィルダウンオプションが指定されている変数を除くすべての変数をリセットします。

Clearall-すべての変数をリセットします。

LineアクションとRecordアクションの両方を指定する場合にのみ、アクションをドットで分割する必要があります。そのうちの1つだけを指定する必要がある場合は、ドットは必要ありません

error action#

Errorすべての行処理を停止し、これまでに収集されたすべての行を破棄して、例外を返します。

このアクションの構文は次のとおりです。

^regex -> Error [word|"string"]