Usando o Awk para imprimir as linhas desejadas do nslookup

0

Estou procurando imprimir o nome e o IP resultantes de um nslookup para que eu possa gerá-los em um arquivo.

Quando executo um nslookup em um host, recebo um resultado assim:

Server: 10.10.10.10
Address: 10.10.10.10#53

Name: EXAMPLE.example.com
Address: 10.10.10.100

Eu quero mostrar o nome e o IP em colunas separadas de um arquivo, então meu comando agora é:

nslookup EXAMPLE.example.com | awk 'FNR ==4 {print$2}' | awk 'FNR ==5 {print$2}'

Não estou recebendo nada, mesmo que o awk separado retorne o valor correto por conta própria. Percebo por que isso não funciona, mas estou pensando na sintaxe correta para imprimir esses dois resultados em suas respectivas colunas.

    
por mitchelwith1el 31.05.2018 / 20:52

2 respostas

1

nslookup EXAMPLE.example.com \
| awk '/^Name:/ {N=$2}; /^Address:/ {A=$2}; END {print N,A}'

Imprimirá apenas o sobrenome e o endereço, mas se você quiser todos:

nslookup EXAMPLE.example.com \
| awk '/^Name:/ {N=$2}; /^Address:/ {print N,$2}'
    
por 31.05.2018 / 21:19
0

Usando dig :

$ dig +noall +answer example.com | awk '{ print $1, $NF }'
example.com. 93.184.216.34

$ dig +noall +answer www.google.com | awk '{ print $1, $NF }'
www.google.com. 172.217.20.36

O script awk imprime o primeiro e último campos delimitados por espaços em branco a partir da saída do comando dig (a saída bruta também contém algumas outras colunas entre elas).

Seu comando:

nslookup EXAMPLE.example.com | awk 'FNR ==4 {print$2}' | awk 'FNR ==5 {print$2}'

Isso não funciona, já que o segundo programa awk está tentando obter a quinta linha da saída do primeiro programa awk , que produz apenas uma única linha.

Algo como isso pode ter funcionado,

$ nslookup example.com | awk 'FNR == 4 || FNR == 5 { print $2 }'
answer:
example.com

mas no meu sistema, como você pode ver, os dados desejados estão em outras linhas (não nas linhas 4 e 5). Isso pode funcionar melhor para você.

    
por 31.05.2018 / 22:29

Tags