Eu tenho vários arquivos de log que contêm vários endereços IP. Eu adoraria poder canalizar os dados através de um programa que corresponda e resolva endereços IP.
IE cat / var / log / somelogfile | hospedeiro
que viraria uma linha como
10:45 acessado por 10.13.13.10
para dentro
10:45 acessado por myhostname.intranet
Meu pensamento é que pode haver uma maneira de fazer isso com uma combinação de sed e host, mas não tenho idéia de como fazê-lo. Sei que poderia escrever um script simples que o faria, mas preferiria usar ferramentas internas, se possível. Alguma sugestão?
command-line
sed
pipe
hostname
Daniel
fonte
fonte
Respostas:
Aqui está uma solução rápida e suja para isso em Python. Faz cache (incluindo cache negativo), mas não é necessário realizar threads e não é a coisa mais rápida que você já viu. Se você salvá-lo como algo como
rdns
, pode chamá-lo assim:A execução anotará os endereços IP com seus registros PTR no local:
E aqui está a fonte:
Observe: isso não é exatamente o que você procura após a carta (usando 'ferramentas padrão'). Mas isso provavelmente ajuda mais do que um hack que resolve todos os endereços IP sempre que são encontrados. Com mais algumas linhas, você pode até fazer cache de resultados persistentemente, o que ajudaria com invocações repetidas.
fonte
Eu usaria
jdresolve -n -a
Empacotado para debian, etc. também disponível em:
https://github.com/jdrowell/jdresolve
Uso-o há mais de uma década para resolver logs do apache, logs do squid e qualquer outra coisa com muitos endereços IP que precisam ser resolvidos. Funciona bem, de forma confiável e rápida, e pode armazenar em cache pesquisas de execuções anteriores.
fonte
um script bash no qual você pode inserir seu arquivo de log e canalizar.
saída se parece com:
fonte
Um rápido perl:
fonte
Se o formato do log estiver exibindo consistentemente o mesmo que você mostra acima, você poderá fazer isso muito sujo
echo 10:45 accessed by 10.13.13.10|awk '{print $4}'|nslookup
fonte