Wie kann man unter Linux mit dem Host-Befehl eine stapelweise umgekehrte IP-Adresse auflösen?

Wie kann man unter Linux mit dem Host-Befehl eine stapelweise umgekehrte IP-Adresse auflösen?

Ich entnehme IP-Adressen dem Zugriffsprotokoll und möchte herausfinden, woher diese IP-Adressen stammen. Dazu verwende ich dieses Skript:

cat /var/log/nginx/access.log |awk '{ print $1}'|sort| uniq -c |sort -n -r | awk '{print $2}' 

Eine Beispielausgabe ist:

1.2.3.4
5.6.7.8
...

Ich kann das Ergebnis nslookupmit dem Pipeline- |Befehl übergeben, aber das Ergebnis ist nicht leicht lesbar. Deshalb habe ich versucht, den Befehl zu verwenden, hostaber die einzige Ausgabe ist eine Information zur Verwendung des hostBefehls.

Wie kann ich hosteinen Befehl zum stapelweisen Auflösen von IP-Adressen verwenden?

Antwort1

Sie können xargs verwenden, es konvertiert Eingaben von der Standardeingabe in Argumente für einen Befehl.

Die Option -n begrenzt die Argumente auf eins (durch eine neue Zeile getrennt) und ruft den Host für jedes davon mehrmals auf. So haben Sie folgende Möglichkeiten:

cat /var/log/nginx/access.log |awk '{ print $1}'|sort| uniq -c |sort -n -r | awk '{print $2}' | xargs -n 1 host

verwandte Informationen