用 UUID 替换 MAC 地址

Rob*_*vie 6 linux scripting sed regular-expression mac-address

在使用日志文件向客户呈现数据(GDPR 规则)之前,我正在寻找一种方法来屏蔽每次出现在日志文件中的客户端 MAC 地址。

我可以使用正则表达式识别 MAC 字符串,但我不确定最好的掩码方式是什么,因为 MD5 似乎被建议不要使用,因为它几乎是透明的!

我需要一个给定的 MAC 来始终返回相同的掩码/uuid,因为 MAC 将在不同时间进入,我需要在它通过系统时跟踪给定的 MAC。

使用的正则表达式是 (?<=clientMac":\s")[A-Z0-9]{12}

理想情况下,我想使用一些简单的方法sed来进行替换,但我接受这可能是不可能的。

Phi*_*pos 3

根据评论中的要求,这里是一个如何使用 执行此类替换的示例sedsed您使用了 /linux 标签,因此使用 GNU及其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
Run Code Online (Sandbox Code Playgroud)

解释:

  • h命令将行保存到保留空间,因此我们可以在弄乱行后恢复它 (-;
  • s/.*clientMac":\s"([A-Z0-9]{12}).*/echo secretKey\1|md5sum/e匹配整行,将实际的 MAC 放入()以在替换中重复使用。替换形成要执行的命令:echo将 MCA 与“salt”一起使用并将其通过管道传输到md5sum. 该e标志使得sed在 shell 中执行此操作并将结果再次放入缓冲区中
  • T如果没有进行替换,则分支到脚本末尾。这是打印没有未经修改的 MAC 的行。仅当进行替换时才执行以下行
  • G附加保留缓冲区中的原始行,因此现在我们有了md5sum输出、换行符和缓冲区中的原始行
  • s/(.*)\s*-\n(.*clientMac":\s")[A-Z0-9]{12}(.*)/\2\1\3/捕获第一对中的 MD5 ()、第二对中 MAC 之前的行以及第三对中 MAC 之后的其余行,从而\2\1\3用 MD5 替换 MAC