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}'
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.
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}'
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ê.