2009-08-07 22 views
7

Digamos que tengo una lista de IPs que entran en un registro que estoy de asimetría:paso de entrada estándar al anfitrión Unix o cavar comando

1.1.1.1 
1.1.1.2 
1.1.1.3 

me gustaría resolver fácilmente a nombres de host. Me gustaría ser capaz de

tail -f access.log | host - 

que falle como anfitrión no entiende el aporte de la entrada estándar de esta manera. ¿Cuál es la forma más fácil de hacerlo sin tener que escribir un archivo estático o recurrir a perl/python/etc.?

Respuesta

19

Uso xargs -l:

tail -f access.log | xargs -l host 
+0

Esto realmente hará que el host se ejecute realmente con host 1.1.1.1 1.1.1.2 Causando una búsqueda dns en un servidor DNS no válido. Establecer "-d '\ n'" no parece ayudarlo. – tomasz

+6

Usa "xargs -l" (o "xargs -L 1") para asegurarte de que el comando se ejecuta para cada línea. –

4

También podría usar la orden interna read:

tail -f access.log | while read line; do host $line; done 
3

En los siguientes comandos, reemplace cat con tail -f, etc., si es necesario.

Usando host:

$ 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. 

Usando :

$ cat my_ips | xargs -i dig -x {} +short 
myhost1.mydomain.com. 
myhost2.mydomain.com. 

Tenga en cuenta que la opción -i a xargs implica la opción -L 1.

Para obtener las IP de su host, consulte this answer.

Cuestiones relacionadas