Bash imprime linha atual, saída da linha e quebra de linha para arquivo

1

Eu tenho um monte de domínios que eu preciso para executar o dig + short mx.

Eu tenho um conjunto de scripts para executar o comando, imprimi-lo em um results.txt com:

./dig_domain_mx.sh > results.txt

O lado negativo é que eu preciso saber quais domínios se relacionam com cada resultado, então minha solução é imprimir a linha atual sendo lida pelo script, depois imprimir a saída da escavação para a linha, então adicionar um quebra de linha. / p>

Eu não consigo encontrar nada que alude a isso ser possível com os comandos dig, então como eu faria isso dentro do meu script Bash?

Script Bash atual, nada de especial:

#!/bin/bash
dig -f domains.txt +short mx
    
por WorseDoughnut 28.04.2016 / 15:52

1 resposta

3

Para evitar a execução de uma dig e read por linha do arquivo, você poderia fazer:

dig -f domains.txt mx +noall +answer

O que daria uma saída como:

stackexchange.com.      300     IN      MX      5 alt1.aspmx.l.google.com.
stackexchange.com.      300     IN      MX      1 aspmx.l.google.com.
stackexchange.com.      300     IN      MX      10 alt3.aspmx.l.google.com.
stackexchange.com.      300     IN      MX      10 alt4.aspmx.l.google.com.
stackexchange.com.      300     IN      MX      5 alt2.aspmx.l.google.com.
google.com.             600     IN      MX      10 aspmx.l.google.com.
google.com.             600     IN      MX      30 alt2.aspmx.l.google.com.
google.com.             600     IN      MX      20 alt1.aspmx.l.google.com.
google.com.             600     IN      MX      40 alt3.aspmx.l.google.com.
google.com.             600     IN      MX      50 alt4.aspmx.l.google.com.

Você pode canalizar para awk '{print $1,$5,$6}' para remover o 300 IN MX .

Uma alternativa para o loop while read poderia ser xargs:

$ xargs -tn1 dig mx +short < domains.txt
dig mx +short stackexchange.com
1 aspmx.l.google.com.
10 alt3.aspmx.l.google.com.
10 alt4.aspmx.l.google.com.
5 alt2.aspmx.l.google.com.
5 alt1.aspmx.l.google.com.
dig mx +short google.com
20 alt1.aspmx.l.google.com.
30 alt2.aspmx.l.google.com.
40 alt3.aspmx.l.google.com.
50 alt4.aspmx.l.google.com.
10 aspmx.l.google.com.
    
por 28.04.2016 / 17:14