Dan*_*iel 8 command-line pipe sed hostname
我有几个包含一堆 IP 地址的日志文件。我希望能够通过一个可以匹配和解析 IP 地址的程序来传输数据。
IE cat /var/log/somelogfile | 主持人
这会变成一条线
10:45 由 10.13.13.10 访问
进入
10:45 通过 myhostname.intranet 访问
我的想法是可能有一种方法可以通过 sed 和 host 的组合来做到这一点,但我不知道该怎么做。我知道我可以编写一个简单的脚本来完成它,但如果可能的话,我宁愿能够使用内置工具。有什么建议?
这是在 Python 中的一个快速而肮脏的解决方案。它进行缓存(包括负缓存),但没有线程,也不是你见过的最快的东西。如果将其另存为类似rdns,则可以这样调用:
zcat /var/log/some-file.gz | rdns
# ... or ...
rdns /var/log/some-file /var/log/some-other-file # ...
Run Code Online (Sandbox Code Playgroud)
运行它将用它们的 PTR 记录就地注释 IP 地址:
$ echo "74.125.132.147, 64.34.119.12." | rdns
74.125.132.147 (rdns: wb-in-f147.1e100.net), 64.34.119.12 (rdns: stackoverflow.com).
Run Code Online (Sandbox Code Playgroud)
这是来源:
$ echo "74.125.132.147, 64.34.119.12." | rdns
74.125.132.147 (rdns: wb-in-f147.1e100.net), 64.34.119.12 (rdns: stackoverflow.com).
Run Code Online (Sandbox Code Playgroud)
请注意:这并不是您所追求的(使用“标准工具”)。但它可能比每次遇到每个 IP 地址时解析每个 IP 地址的 hack 对您的帮助都大。多写几行,你甚至可以让它持久地缓存它的结果,这将有助于重复调用。