使用标准命令行工具解析命令输出中的所有 ip 地址

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 的组合来做到这一点,但我不知道该怎么做。我知道我可以编写一个简单的脚本来完成它,但如果可能的话,我宁愿能够使用内置工具。有什么建议?

Ale*_*ios 8

这是在 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 对您的帮助都大。多写几行,你甚至可以让它持久地缓存它的结果,这将有助于重复调用。