Вот быстрое и грязное решение этого в Python. Это делает кэширование (включая отрицательное кэширование), но никакая поточная обработка и не является самой быстрой вещью, которую Вы видели. Если Вы сохраняете его как что-то как rdns
, можно назвать его как это:
zcat /var/log/some-file.gz | rdns
# ... or ...
rdns /var/log/some-file /var/log/some-other-file # ...
Выполнение его аннотирует IP-адреса их оперативными записями PTR:
$ 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).
И вот источник:
#!/usr/bin/env python
import sys, re, socket
cache = dict()
def resolve(x):
key = x.group(0)
try:
return "%s (rdns: %s)" % (key, cache[key])
except KeyError:
try:
cache[key] = socket.gethostbyaddr(key)[0]
except socket.herror:
cache[key] = '?'
return "%s (rdns: %s)" % (key, cache[key])
for f in [open(x) for x in sys.argv[1:]] or [sys.stdin]:
for line in f:
sys.stdout.write(re.sub("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", resolve, line))
# End of file.
Пожалуйста, примите во внимание: это не вполне, что Вы после к букве (использующий ‘стандартные инструменты’). Но это, вероятно, помогает Вам больше, чем взлом, который разрешает каждый IP-адрес каждый раз, когда с этим встречаются. Еще с несколькими строками можно даже заставить его постоянно кэшировать свои результаты, которые помогли бы с повторными вызовами.
Я полагаю, что этот поток описывает Вашу проблему
Короче говоря proc запись, содержащая то значение, только для чтения, и не может быть сделана перезаписываемой легко:
$ ls -ln /proc/sys/net/ipv4/conf/all/mc_forwarding
-r--r--r-- 1 0 0 0 Jun 17 08:20 /proc/sys/net/ipv4/conf/all/mc_forwarding
$ sudo chmod u+x /proc/sys/net/ipv4/conf/all/mc_forwarding
chmod: changing permissions of `/proc/sys/net/ipv4/conf/all/mc_forwarding': Operation not permitted
Но можно выполнить собственного демона маршрутизатора к (например, xorp) для получения многоадресно переданной передачи.
вы также можете получить такую ошибкуsysctl: setting key "net.ipv4.conf.all.mc_forwarding": No such file or directory
mc_forwarding - BOOLEAN
Do multicast routing. The kernel needs to be compiled with CONFIG_MROUTE
and a multicast routing daemon is required.
conf/all/mc_forwarding must also be set to TRUE to enable multicast
routing for the interface
ядро должно быть скомпилировано с опцией CONFIG _MROUTE, в ядре по умолчанию эта опция не установлена.