Passare stdin in host Unix o il comando dig
Domanda
Diciamo che ho una lista di indirizzi IP che entrano in un registro che sto tailing:
1.1.1.1
1.1.1.2
1.1.1.3
mi piacerebbe risolvere facilmente ad ospitare nomi. Mi piacerebbe essere in grado di
tail -f access.log | host -
Il che non riesce come ospite non capisce di input provenienti da standard input in questo modo. Qual è il modo più semplice per farlo con senza dover scrivere un file statico o di riserva per Perl / Python / ecc.?
Soluzione
Usa xargs -l
:
tail -f access.log | xargs -l host
Altri suggerimenti
È anche possibile utilizzare il leggere incorporato :
tail -f access.log | while read line; do host $line; done
Nei comandi seguenti, sostituire cat
con tail -f
, ecc se necessario.
host
Usando:
$ cat my_ips | xargs -i host {}
1.1.1.1.in-addr.arpa domain name pointer myhost1.mydomain.com.
1.1.1.2.in-addr.arpa domain name pointer myhost2.mydomain.com.
dig
Usando:
$ cat my_ips | xargs -i dig -x {} +short
myhost1.mydomain.com.
myhost2.mydomain.com.
Si noti che l'opzione -i
al xargs
implica l'opzione -L 1
.
Per prima ottenere gli indirizzi IP del proprio host, vedere questa risposta .