matchport

ポートグループで入力レコードをフィルタリングします。ポートまたはプロトコル値がnullであるか、タイプが一致しない場合はそのレコードを破棄します。

コマンドプロパティ

項目説明
コマンドタイプ加工クエリ
必要な権限なし
ライセンス使用量該当なし
並列実行対応
分散実行データノードで実行(mapper)

構文

matchport guid=STR [port=STR] [protocol=STR] [invert=BOOL] [verify=BOOL]

オプション

guid=STR
マッチングに使用するポートグループのGUID。
port=STR
ポート番号が格納されているフィールドの名前。(デフォルト:port
protocol=STR
プロトコルが格納されているフィールドの名前。tcpudpicmpの値を認識します。(デフォルト:protocol
invert=BOOL
tを指定するとポートグループにマッチするレコードを破棄し、マッチしないレコードのみを出力します。(デフォルト:f
verify=BOOL
fを指定するとパース段階でポートグループの有効性検査を省略します。(デフォルト:t

入力フィールド

フィールドタイプ必須説明
port32ビット整数必須ポート番号。portオプションで別のフィールド名を指定できます。数値タイプでない場合はレコードを破棄します。
protocol文字列必須プロトコル名。protocolオプションで別のフィールド名を指定できます。文字列でない場合はレコードを破棄します。

エラーコード

パースエラー
エラーコードメッセージ説明
300010matchportコマンドはfieldとportオプションを同時に使用できません。fieldportオプションを同時に指定した場合
300011matchportコマンドはfieldとprotocolオプションを同時に使用できません。fieldprotocolオプションを同時に指定した場合
300012matchportコマンドにguidオプションを指定してください。guidオプションがない場合
300013matchportコマンドのguidに対応するポートグループがありません。指定したGUIDに対応するポートグループが存在しない場合
300014ポートグループデータを読み込めません。ポートグループデータの読み込み中にエラーが発生した場合
ランタイムエラー

該当なし

説明

matchportコマンドは、入力レコードのポート番号とプロトコル値が指定されたポートグループに含まれるかを確認し、マッチするレコードのみを出力します。invertオプションをtに指定するとマッチしないレコードのみを出力します。

ポートフィールドの値が数値タイプでないか、プロトコルフィールドの値が文字列でない場合、invertオプションの値に関わらずそのレコードを破棄します。

分散環境ではデータノードでフィルタリングを実行します。

使用例

  1. ポートグループでフィルタリング

    json "[{'port': 80, 'protocol': 'tcp'}, {'port': 53, 'protocol': 'udp'}, {'port': 8080, 'protocol': 'tcp'}]"
    | matchport guid=550e8400-e29b-41d4-a716-446655440000
    

    指定したポートグループに含まれるレコードのみを出力します。

  2. ポートグループにマッチしないレコードの抽出

    json "[{'port': 80, 'protocol': 'tcp'}, {'port': 53, 'protocol': 'udp'}, {'port': 8080, 'protocol': 'tcp'}]"
    | matchport guid=550e8400-e29b-41d4-a716-446655440000 invert=t
    

    invert=tオプションを指定してポートグループに含まれないレコードのみを出力します。

  3. ユーザー定義フィールド名の指定

    json "[{'dst_port': 443, 'proto': 'tcp'}, {'dst_port': 53, 'proto': 'udp'}]"
    | matchport guid=550e8400-e29b-41d4-a716-446655440000 port=dst_port protocol=proto
    

    portprotocolオプションでポート番号フィールドとプロトコルフィールドの名前を指定します。