Mon journal du routeur enregistre l'activité par adresse IP, mais je veux voir les adresses URL correspondantes à la place. Existe-t-il un moyen de dériver les URL des IP – en vrac / lot – sans devoir le faire manuellement / individuellement une ligne à la fois?
Si vous avez une liste, vous pouvez le faire très facilement sur n'importe quel système d'exploitation à l'aide du module de socket
intégré de Python .
import socket socket.gethostbyaddr('198.252.206.16')
Cela revient:
('stackoverflow.com', ['16.206.252.198.in-addr.arpa'], ['198.252.206.16'])
Donc, scripter ce qui ne serait pas du tout difficile, il suffit d'avoir un IP par ligne dans un fichier et faire quelque chose comme:
import socket fi = open('iplist.txt') for line in fi.readlines(): print( socket.gethostbyaddr( line )[0] ) fi.close()
Bien sûr, vous pouvez ajuster la sortie pour écrire l'adresse IP et le nom de domaine dans un autre fichier si vous le désirez.
Cependant, comme le souligne @ScottChamberlain – cela ne résolut pas toujours pour le site qui partage une adresse IP (sous-domaines et inclus).
Supposons que vous avez un fichier texte ips.txt
avec une liste d'adresses IP:
$ cat ips.txt | xargs host
Ou vous pouvez écrire un script bash élégant pour formater les résultats:
for ip in $(cat ips.txt); do domain_names=$(host $ip | grep "domain name" | awk '{print $5}' | tr ".\\n" " ") # test first char of domain names if [ -n ${domain_names:0:1} ]; then echo "$ip $domain_names" else echo "$ip not found" fi done