クライアントMACアドレスを使用してクライアントにデータを提供する前に、ログファイルに表示されるたびにクライアントMACアドレスをマスクする方法を探しています(GDPRルール)。
正規表現を使用してMAC文字列を識別できますが、MD5がほとんど透明であるため使用されなくなったように見えるため、これをマスクする最良の方法は何であるかわかりません。
MACは異なる時間に入り、システムを通過するときに指定されたMACを追跡する必要があるため、常に同じマスク/ uuidを返すには指定されたMACが必要です。
使用される正規表現は次のとおりです。 (?<=clientMac":\s")[A-Z0-9]{12}
理想的には、交換のために簡単なものを使用したいのですが、sed
これは不可能かもしれないことを認めます。
ベストアンサー1
コメントで要求されているように、以下はを使用してこれらの交換を実行する方法の例ですsed
。 / linuxラベルを使用したので、GNUsed
とそのe
フラグをコマンドとして使用するs
のは安全です。
sed -E 'h;s/.*clientMac":\s"([A-Z0-9]{12}).*/echo secretKey\1|md5sum/e;T
G;s/(.*)\s*-\n(.*clientMac":\s")[A-Z0-9]{12}(.*)/\2\1\3/' logfile
説明する:
- この
h
コマンドはその行を予約済みスペースに保存するため、線を台無しにした後に復元できます(-; s/.*clientMac":\s"([A-Z0-9]{12}).*/echo secretKey\1|md5sum/e
ライン全体を一致させて、実際のMACを()
交換に再利用します。置換は実行するコマンドを構成します。echo
「salt」と一緒にMCAを使用してパイプに入りますmd5sum
。このe
フラグを使用すると、sed
このコマンドがシェルで実行され、結果がバッファに戻されます。T
代替項目がない場合は、スクリプトの最後に分岐します。変更されていないMACを印刷する行。次の行は、交換時にのみ実行されます。G
追加はバッファの元の行を保持するため、バッファにmd5sum
出力、改行、元の行があります。s/(.*)\s*-\n(.*clientMac":\s")[A-Z0-9]{12}(.*)/\2\1\3/
最初のペアのMD5、2番目のペアの()
MACの前のライン、3番目のペアのMACの後の残りのラインをキャプチャして、\2\1\3
MACをMD5に置き換えます。